首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

创造型模式-工厂方法

2012-12-16 
创建型模式---工厂方法创建型模式包括以下5种:FactoryMethod ( 工厂方法) AbstractFactory ( 抽象工厂) Si

创建型模式---工厂方法

创建型模式包括以下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();}}/** 运行结果: 中国人在工作。 美国人在工作。*/

?

?

?

?

热点排行