纵横谈23种面向对象的设计模式--创建型

纵横谈23种面向对象的设计模式--创建型

ID:42667198

大小:532.76 KB

页数:15页

时间:2019-09-19

纵横谈23种面向对象的设计模式--创建型_第1页
纵横谈23种面向对象的设计模式--创建型_第2页
纵横谈23种面向对象的设计模式--创建型_第3页
纵横谈23种面向对象的设计模式--创建型_第4页
纵横谈23种面向对象的设计模式--创建型_第5页
资源描述:

《纵横谈23种面向对象的设计模式--创建型》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、工厂方法模式:提供一个简单的决策类,根据条件生成产品。抽象工厂模式:提供一个创建并返回一系列产品的接口。单件模式:某个类只能有一个实例。提供一个全局访问点。(可拓展到有限个实例)生成器模式:将一个复杂对象的构建于呈现分开,以便根据不同需要创建不同的形式。原型模式:先实例化一个类,然后克隆或者拷贝该类来构建新的实例。可以用共有方法进一步修改这些实例。难点:生成器模式关注于将构造对象的过程和构造的各个部分分开,而抽象工厂关注于构建一个产品系列。实际上,最大的区别是生成器模式创建的产品不一定有共同的父类,只要有类似的构造过程即可。实际上我们常见到的文件资源管理器的实现完全

2、可以使用生成器模式。简单工厂、工厂模式与生成器模式对比:工厂模式变化点在于新增对象(客户在需要创建新对象的时候,只需要新建一个工厂去继承工厂父类就可以了),而生成器模式在于构建复杂对象的表示(客户在需要创建这个复杂对象的时候,只需要给指导者一个具体的创建者就可以了),变化点完全不同,那么其应用场景自然不同。如果非要霸王硬上弓的用,那么就需要改动模式构建,例如,生成器模式若要完成新增对象的功能,那么它就可能产生两个不同的builder基类。这是完全不推荐的。那简单工厂属于静态工厂,根据传入参数决定需要创建哪种对象,它的扩展性也不好。Prototype模式同工厂模式,同

3、样对客户隐藏了对象的创建工作,但是,与通过对一个类进行实例化来构造新对象不同的是,原型模式是通过拷贝一个现有对象生成新对象的,达到了"隔离类对象的使用者和具体类型(易变类)之间的耦合关系"的目的。此外引入Prototype模式后不再需要一个与具体产品等级结构平行的工厂方法类,减少了类的构造。总之,根据不同的应用场景(即不同的变化),选择合适的模式才是王道。什么叫合适,即变化都可以像配件那样直接装配到系统中,无须改动系统其它部分,系统会自动检测到新增配件,并通过客户程序或者配置文件进行选择。简单工厂模式:专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同

4、的父类。它又称为静态工厂方法模式,属于类的创建型模式。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。意图:提供一个类,由它负责根据一定的条件创建某一具体类的实例角色及其职责:·工厂(Creator)角色:简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。·抽象(Product)角色:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。·具体产品(ConcreteProduct)角色:简单工厂模式的创建目标,所有创建的对象都是充

5、当这个角色的某个具体类的实例。一般来讲它是抽象产品类的子类,实现了抽象产品类中定义的所有接口方法。模式的特点:·优点:简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。在这个模式中,工厂类是整个模式的关键所在。它包含必要的判断逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。用户在使用时可以直接根据工厂类去创建所需的实例,而无需了解这些对象是如何创建以及如何组织的。有利于整个软件体系结构的优化。·缺点:体现在其工厂类上,由于工厂类集中了所有实例的创建逻辑,所以"高内聚"方面做的并不好。另外,当系统中的具体产品类不断增多时,可能会

6、出现要求工厂类也要做相应的修改,扩展性并不很好。 工厂方法模式:工厂方法模式的对简单工厂模式进行了抽象。有一个抽象的Factory类(可以是抽象类和接口),这个类将不在负责具体的产品生产,而是只制定一些规范,具体的生产工作推延到其子类去完成。意图:定义一个用户创建对象的接口,让子类决定实例化哪一个类,工厂方法模式使一个类的实例化延迟到其子类。优点:实现了开闭原则,可以在不改变工厂的前提下增加新产品。实现要点:·FactoryMethod模式的两种情况:一是Creator类是一个抽象类且它不提供它所声明的工厂方法的实现;二是Creator是一个具体的类且它提供一个工厂

7、方法的缺省实现。·工厂方法是可以带参数的。·工厂的作用并不仅仅只是创建一个对象,它还可以做对象的初始化,参数的设置等。效果:·用工厂方法在一个类的内部创建对象通常比直接创建对象更灵活。·FactoryMethod模式通过面向对象的手法,将所要创建的具体对象的创建工作延迟到了子类,从而提供了一种扩展的策略,较好的解决了这种紧耦合的关系。适用性:·当一个类不知道它所必须创建的对象的类的时候。·当一个类希望由它的子类来指定它所创建的对象的时候。·当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。附注:·基类是一个

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。