创建型模式---工厂方法
创建型模式包括以下5种:
FactoryMethod ( 工厂方法)
AbstractFactory ( 抽象工厂)
Singleton ( 单态模式 )
Builder ( 建造者模式 )
Prototype ?原型模式 )
?
设计模式之一: 工厂方法
定义:一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到了其子类。
适用性:
?? 1> 当客户程序不需要知道要使用对象的创建过程。
?? 2> 客户程序使用的对象存在变动的可能,或者根本就不知道使用哪一个具体的对象。
?参与者
?1.Product 定义工厂方法所创建的对象的接口。
?2.ConcreteProduct 具体的Product,实现Product接口。
?3.Creator 声明工厂方法,该方法返回一个Product类型的对象。Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象。可以调用工厂方法以创建一个Product对象。
?4.ConcreteCreator 重定义工厂方法以返回一个ConcreteProduct实例。
?
代码如下:?
package keifer.share.creationalPattern.factory.method;public class FactoryMethodPattern {//Test类public static void main(String[] args) {IWorkFactory chineseWorkFactory = new ChineseWorkFactory();chineseWorkFactory.getwork().work();IWorkFactory americanWorkFactory = new AmericanWorkFactory();americanWorkFactory.getwork().work();}}interface IHuman {//所属角色:Productpublic void work();}class AmericanPerson implements IHuman {//所属角色:ConcreteProductpublic void work() {System.out.println("美国人在工作。");}}class ChinesePerson implements IHuman {//所属角色:ConcreteProductpublic void work() {System.out.println("中国人在工作。");}}interface IWorkFactory {//工厂类接口。所属角色:CreatorIHuman getwork();}class ChineseWorkFactory implements IWorkFactory {//所属角色:ConcreteCreator@Overridepublic IHuman getwork() {return new ChinesePerson();}}class AmericanWorkFactory implements IWorkFactory {//所属角色:ConcreteCreator@Overridepublic IHuman getwork() {return new AmericanPerson();}}/** 运行结果: 中国人在工作。 美国人在工作。*/?
?
?
?