工厂方法模式(Factory Method)

来源:互联网 发布:交换机互联 网络名 编辑:程序博客网 时间:2024/05/01 23:29


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

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

工厂方法模式的结构:




抽象工厂角色:担任这个角色的是工厂方法模式的核心,它是与应用程序无关的。任何在模式中创建对象的工厂类必须实现这个接口。在上面的系统中,这个角色由java接口“抽象工厂”扮演;在实际的系统中,这个角色也常常使用抽象java类实现。


具体工厂角色:担任这个角色的是实现了抽象工厂接口的具体java类。具体工厂角色含有与应用密切相关的逻辑,并且受到应用程序的调用以创建产品对象。在本系统中给出了三个这样的角色,也就是具体java类。


抽象产品角色:工厂方法模式所创建的对象的超类型,也就是产品对象共同父类或共同拥有的接口。在本系统中,这个角色由java接口抽项产品扮演;在实际的系统中,这个角色也常常使用抽象java类实现。


具体产品角色:这个角色实现了抽象产品所声明的接口。工厂方法模式所创建的每一个对象都是某个具体产品角色的实例。


例如:


抽象工厂类是工厂方法模式的核心,但是它并不掌握水果类或蔬菜类的生杀大权。相反地,这项权利被交给子类,即AppleGardener StawberryGardener以及GrapeGardener


代码清单:

抽象产品类


具体产品角色(苹果)



具体产品角色(葡萄)


具体产品角色(草莓)


抽象工厂类


具体工厂类(苹果)


具体工厂类(葡萄)


具体工厂类(草莓)






2 0