工厂方法模式

来源:互联网 发布:梵克雅宝香水知乎 编辑:程序博客网 时间:2024/05/22 06:22

对工厂方法模式的理解

-工厂方法模式的定义
一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。工厂 方法模式又简称为工厂模式,又可称作虚拟构造器模式或多态工厂模式。是一种创建型模式

产品类和工厂类都有自己的抽象基类,与简单工厂方法相比,此模式最重要的区别是引入了抽象工厂角色。

完整解决方案见《设计模式的艺术》 pg66。抽象产品、具体产品 抽象工厂、具体工厂

这实际上就是对简单工厂模式的扩展,将工厂类也抽象出基类,这样,改代码时,就只需要添加新的产品类代码,原来的代码就可以不作改动。

主要适用在,1)客户端不知道其所需要的对象的类,
2)抽象工厂类通过其子类来指定创建哪个对象。

一个使用例子:
使用工厂方法模式设计一个程序来读取各种不同类型的图片格式,针对每一种图片都设计一个图片 读取器,例如,GIF图片读取器用于读取GIF格式的图片,JPG图片读取器用于读取JPG格式的图片。需充分考虑系统的灵活性和可扩展性。

//图片读取器接口,抽象产品interface Reader{    public void ReaderPic();}//GIF读取器:具体产品class GIFReader implements Reader{    public void ReaderPic(){        System.out.println("GIF读取");    }}//JPG读取器:具体产品class JPGReader implements Reader{    public void ReaderPic(){        System.out.println("JPG读取");    }}//图片读取器工厂接口:抽象工厂interface ReaderFactory{    public Reader createReader();}//GIF读取器工厂类:具体工厂class GIFReaderFactory implements ReaderFactory{    public Reader createReader(){        Reader reader = new GIFReader();        return reader;    }}//JPG读取器工厂接口:抽象工厂class JPGReaderFactory implements ReaderFactory{    public Reader createReader(){        Reader reader = new JPGReader();        return reader;    }}

客户端的测评代码

class Client{    public static void main(String argx[]){        ReaderFactory factory;        Reader reader;        factory = new GIFReaderFactory();        reader = factory.createReader();        reader.ReaderPic();    }}

可以利用JAVA中的反射与配置文件将扩展,也就不再需要修改客户端代码

0 0
原创粉丝点击