设计模式之工厂方法模式

来源:互联网 发布:linux vi命令详解 编辑:程序博客网 时间:2024/05/21 10:10

设计模式之工厂方法模式

1. 工厂方法模式定义

工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。

工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。

简单工厂模式中在工厂方法中需要添加逻辑代码,当添加新的对象时不易扩展,此时可使用工厂方法模式

2. 代码实现

2.1 工厂接口

public interface IFactoryM {    public Fruit factory();}

2.2 抽象角色与具体角色

public interface Fruit {    public void eat();}
public class Apple implements Fruit{    @Override    public void eat() {        // TODO Auto-generated method stub        System.out.println("apple eat");    }}
public class Orange implements Fruit{    @Override    public void eat() {        // TODO Auto-generated method stub        System.out.println("orange eat");    }}

2.3 工厂实现

public class AppleFactory implements IFactoryM{    @Override    public Fruit factory() {        return new Apple();    }}
public class OrangelFactory implements IFactoryM{    @Override    public Fruit factory() {        return new Orange();    }}

2.4 调用

/** * 工厂方法模式 * 核心是一个抽象工厂类,具体工厂继承抽象工厂 * */public class Main {    private static IFactoryM fm;    public static void main(String[] args) {        fm = new AppleFactory();        fm.factory().eat();        fm = new OrangelFactory();        fm.factory().eat();    }}

3. 总结

 工厂方法模式和简单工厂模式在结构上的不同很明显。工厂方法模式的核心是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上。
  工厂方法模式退化后可以变得很像简单工厂模式。设想如果非常确定一个系统只需要一个具体工厂类,那么不妨把抽象工厂类合并到具体工厂类中去。由于只有一个具体工厂类,所以不妨将工厂方法改为静态方法,这时候就得到了简单工厂模式。

  如果系统需要加入一个新的类型,那么所需要的就是向系统中加入一个这个类以及所对应的工厂类。没有必要修改客户端,也没有必要修改抽象工厂角色或者其他已有的具体工厂角色。对于增加新的导出类型而言,这个系统完全支持“开-闭原则”。

0 0
原创粉丝点击