工厂模式资料_第1页
工厂模式资料_第2页
工厂模式资料_第3页
工厂模式资料_第4页
工厂模式资料_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

工厂方法定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。一情景超类定义了算法的骨架,把算法中变化的部分委托给不同的类的实例(这些类继承自一个公共的接口),如果用NEW直接实例化。设计就会缺乏弹性,不方便以后的维护。一个替代方案就是传递实例化类名字做为参数,同时用大量的IF,ELSE语句判断该实例化哪个类。但是以后增加新的实例化类时就必须修改这段代码。二解决方案1面向接口编程(第一个替代方案)。超类中不应该用具体的类,而是用接口代替。2封装创建对象的代码。把变动的部分分离出去。生成一个工厂类,以为创建对象的工作委托工厂实现。(简单工厂)3把变化的部分定义为一个接口,在子类实现超类的接口,实例化就推迟到子类实现。(工厂方法,工厂方法是模板模式的特殊情况,特殊指的是抽象方法用于创建对象,而不是算法。),子类创建对象可以使用简单工厂。三UML图图3.1简单工厂CreatorCreatorFactoryProductSubProduct1SubProduct2SubProduct3继承依赖斜体表示抽象类Product也可以是接口简单工厂是通过组合和委托实现的,把创建对象的工作委托给工厂实现。看上去只是把创建对象的代码换到另一个地点,问题依然存在。以后增加新的产品丢需要修改源代码,没有对修改关闭,对扩展打开。但是简单工厂可以有许多客户,以后别的地方可能也会用到它;其次,创建对象的代码包装进一个类,以后实现改变时,只需修改

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论