首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

工场方法(Factory Method)

2012-09-21 
工厂方法(Factory Method)意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一

工厂方法(Factory Method)
意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到其子类。
别名:虚构造器(Virtual Constructor)
结构:

Product类或接口,定义工厂方法所创建的对象的接口
ConcreteProduct类,实现Product接口
Creator类,声明工厂方法factoryMethod,该方法返回一个Product类型的对象。Creator也可以定义一个工厂方法的缺省实现,返回一个缺省的ConcreteProduct对象;可以调用工厂方法创建一个Product对象。
ConcreteCreator类,重定义工厂方法以放回一个ConcreteProduct实例。

Creator依赖它的子类来定义工厂方法,要注意不要在Creator的构造器中调用工厂方法,此时在ConcreteCreator中该方法还不可用。

一般实现:


图中Application可以是一个文档编辑器(Editor),支持多种格式,如TXT、PDF、DOC等,MyApplication对应具体的文档编辑器(TxtEditor, PdfEditor, DocEditor)。
Text Document openText Document revertText Document saveText Document close

在上例中,Client不知道Document类,只通过Editor间接的访问Document,这有点儿想Proxy模式,Editor对Client隐藏了Document类。因此设计模式常结合起来一起使用,具体情况具体分析,不能一概而论。总之设计模式的目的就是要隐藏变化,当变化到来时,做尽量少的修改,遵循开闭原则等面向对象一般原则http://jack-boy.iteye.com/blog/1420629。

热点排行