- 1、本文档共34页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象的设计模式学习
23种设计模式可以在功能设计,功能的编程实现设计,程序结构优化和性能优化等方面给我们以帮助。大部分模式我们在编程的过程中都已经无意识的使用过。
每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这是面向对象编程人员必须掌握的一门内功。
设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案。
面向对象设计模式描述了面向对象设计过程中、特定场景下、类与相互通信的对象之间常见的组织关系。
整个设计模式贯穿一个原理:面对接口编程,而不是面对实现.目标原则是:降低耦合,增强灵活性.
1.1. 创建型
创建型:负责对象创建。
一、Singleton,单例模式:
定义:保证一个类只有一个实例,并提供一个访问它的全局访问点 。
单例模式有延迟初始化和非延迟两种实现方式。
单体模式注意事项:
有时在某些情况下,使用Singleton并不能达到Singleton的目的,如有多个Singleton对象同时被不同的类装入器装载;在EJB这样的分布式系统中使用也要注意这种情况,因为EJB是跨服务器,跨JVM的。
Singleton模式看起来简单,使用方法也很方便,但是真正用好,是非常不容易,需要对Java的类 线程 内存等概念有相当的了解。
总之:如果你的应用基于容器,那么Singleton模式少用或者不用,可以使用相关替代技术。
二、Abstract Factory,抽象工厂模式
又称为工具箱,产生产品族,但不利于产生新的产品。
定义:提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类。
面向对象的设计中,我们使用“new”的方式来创建对象,这样的问题就是:我们依赖实现,不能应对“具体实例化类型”的变化。
变化点在“对象创建”,因此就封装“对象创建”,
面向接口编程——依赖接口,而非依赖实现。
AbstractFactory模式的几个要点
1.如果没有应对“多系列对象创建”的需求变化,则没有必要使用AbstractFactory模式,这时候使用简单的静态工厂完全可以。
2.系列对象指的是这些对象之间有相互依赖、或作用的关系,例如游戏开发场景中“道路”与“房屋”的依赖,“道路”与“地道”的依赖。
3.AbstractFactory模式主要在于应对“新系列”的需求变动。其缺点在于难以应对“新对象”的需求变动。
4.AbstractFactory模式经常和FactoryMethod模式共同组合来应对“对象创建”的需求变化。(FactoryMethod是应对对象的变化,)
Builder模式和AbstractFactory模式的区别
Builder模式更强调的是对象部分的“构建”这样一个严格的过程,它构建的是整个对象的各个部分。它把构建稳定下来之后,各个部分在变化,最后组合成一个整体的对象。
AbstractFactory模式构建的是一组系列交互的对象。互相依赖、互相交互的对象和一个对象的各个部分是有区别的。
三、Factory Method,工厂方法模式
又称为多形性工厂;
定义:一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类。
1)抽象工厂角色(AbstractCreator):这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。
2)具体工厂角色(Creator):它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。
3)抽象产品角色(AbstractProduct):它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。
4)具体产品角色(Product):具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。
四、Builder,建造模式
建造模式,又叫生成器模式。
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.
Builder模式主要用于“分步骤构建一个复杂的对象”。在这其中“分步骤”是一个稳定的算法(即Director),而复杂对象的各个部分(即ConcreteBuilder)则经常变化。
变化点在哪里,封装哪里——Builder模式主要在于应对“复杂对象各个部分”的频繁需求变动。其缺点在于难以应对“分步骤构建算法”的需求变动。(例如房屋构造如果经常改变,那么这个Builder模式也没有意义了)
AbstractFactory模式解决“系列对象”的需求变化,Builder模式解决“对象部分”的需求变化。Builder模式通常和Composite模式组合使用。
应用举例:数据库连接池(每一个连接的重用)
五、Prototype,原始模型模式
您可能关注的文档
- 非小细胞肺癌分子靶向治疗新进展支修益.doc
- 非小细胞肺癌化疗临床路径.doc
- 非小细胞肺癌化疗方案大全.doc
- 非小细胞肺癌患者的纵隔淋巴结影像学分期.doc
- 非小细胞肺癌患者血清及癌组织中P185neu的定量检测.doc
- 非小细胞肺癌术后辅助化疗临床路径.doc
- 非小细胞肺癌术后辅助治疗现状及进展.doc
- 非小细胞肺癌的靶向性治疗.doc
- 非小细胞肺癌靶向药物治疗新进展2011.doc
- 非屏蔽双绞线的制作与连接.doc
- 2024年鸡西市城子河区四上数学期末经典模拟试题含解析.doc
- 2024年吉安市吉州区四上数学期末达标检测试题含解析.doc
- 2024年湖南省湘潭市数学六上期末复习检测模拟试题含解析.doc
- 2024年黄梅县六上数学期末教学质量检测试题含解析.doc
- 2024年湖北省十堰市房县西部十一校校六上数学期末学业水平测试模拟试题含解析.doc
- 2024年湖南省常德市临澧县六年级数学第一学期期末教学质量检测试题含解析.doc
- 2024年湖南省常德市武陵区六年级数学第一学期期末达标测试试题含解析.doc
- 2024年湖南省衡阳市衡南县六上数学期末监测模拟试题含解析.doc
- 2024年贺州市富川瑶族自治县数学四上期末统考试题含解析.doc
- 2024年黑龙江省哈尔滨市呼兰区数学六年级第一学期期末统考模拟试题含解析.doc
文档评论(0)