工厂方法模式

对工厂方法模式的理解

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

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

完整解决方案见《设计模式的艺术》 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中的反射与配置文件将扩展,也就不再需要修改客户端代码

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值