欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

设计模式笔记(2)

程序员文章站 2022-04-09 14:46:13
工厂方法模式 简单工厂类 简单工厂模式属于创建型模式,又称静态工厂方法(Static factory method)模式。其是由一个工厂对象决定创建出哪一种产品类的实例,可理解为不同工厂模式的一个特殊实现。 上述代码对于修改开放了,违反了开放封闭原则。故而引出工厂方法模式,去解决这样的矛盾。 GOF ......

工厂方法模式

简单工厂类

简单工厂模式属于创建型模式,又称静态工厂方法(Static factory method)模式。其是由一个工厂对象决定创建出哪一种产品类的实例,可理解为不同工厂模式的一个特殊实现。

public class BreadFactory {
    public static BreadMaker MakeBread(int breadType) { 
        BreadMaker breadMaker = null;
        switch(breadType)
        {
            case1 : 
                breadMaker = new BlackBread();
            case2 :
                breadMaker = new HoneyBread();
               ........
        }
        return breadMaker;
    }
}

上述代码对于修改开放了,违反了开放封闭原则。故而引出工厂方法模式,去解决这样的矛盾。

GOF对于工厂方法模式的定义是:“定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使得一个类的实例化被延迟到其子类。”
具体实现代码如下

public class BreadMaker
{
    public void GetBread()
    {
    }
}
public class BlackBread extends BreadMaker{
    @override
    public void GetBread()
    {
       "黑面包"
    }
}

public class HoneyBread extends BreadMaker{
    @override
    public void GetBread()
    {
       "蜂蜜面包"
    }
}

public class WhiteBread extends BreadMaker{
    @override
    public void GetBread()
    {
       "白面包"
    }
}

public interface IFactory{
    BreadMaker CreateBread();
}

public class BlackBreadFactory implements IFactory
{
    @override
    public BreadMaker CreateBread()
    { 
        return new BlackBread();
    }
}

public class HoneyBreadFactory implements IFactory
{
    @override
    public BreadMaker CreateBread()
    { 
        return new HoneyBread();
    }
}

public class WhiteBreadFactory implements IFactory
{
    @override
    public BreadMaker CreateBread()
    { 
        return new WhiteBread();
    }
}

工厂模式适用的地方:

  1. 当一个类不知道他所必须创建的对象的类是,比如要创建一个白面包的对象,但是并不知道他的类是whitebread
  2. 当一个类希望由它的子类来指定它所创建的对象时
  3. 当类将创建对象的职责委托给多个帮助子类中的某一个,并且希望将哪一个帮助子类是代理者这一信息局部化的时候