欢迎来到天天文库
浏览记录
ID:18837477
大小:637.98 KB
页数:33页
时间:2018-09-23
《面向对象的设计模式学习》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、23种设计模式可以在功能设计,功能的编程实现设计,程序结构优化和性能优化等方面给我们以帮助。大部分模式我们在编程的过程中都已经无意识的使用过。每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这是面向对象编程人员必须掌握的一门内功。设计模式描述了软件设计过程中某一类常见问题的一般性的解决方案。面向对象设计模式描述了面向对象设计过程中、特定场景下、类与相互通信的对象之间常见的组织关系。整个设计模式贯穿一个原理:面对接口编程,而不是面对实现.目标原则是:降低耦合,增强灵活性.1.1.创建型创建型:负责对象创建。一、Singleton,单例模式:定义:保证一个类只有
2、一个实例,并提供一个访问它的全局访问点。单例模式有延迟初始化和非延迟两种实现方式。单体模式注意事项:有时在某些情况下,使用Singleton并不能达到Singleton的目的,如有多个Singleton对象同时被不同的类装入器装载;在EJB这样的分布式系统中使用也要注意这种情况,因为EJB是跨服务器,跨JVM的。Singleton模式看起来简单,使用方法也很方便,但是真正用好,是非常不容易,需要对Java的类线程内存等概念有相当的了解。总之:如果你的应用基于容器,那么Singleton模式少用或者不用,可以使用相关替代技术。二、AbstractFactory,抽象工厂模式又称为工具箱,产
3、生产品族,但不利于产生新的产品。定义:提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类。面向对象的设计中,我们使用“new”的方式来创建对象,这样的问题就是:我们依赖实现,不能应对“具体实例化类型”的变化。变化点在“对象创建”,因此就封装“对象创建”,面向接口编程——依赖接口,而非依赖实现。AbstractFactory模式的几个要点1.如果没有应对“多系列对象创建”的需求变化,则没有必要使用AbstractFactory模式,这时候使用简单的静态工厂完全可以。2."系列对象"指的是这些对象之间有相互依赖、或作用的关系,例如游戏开发场景中“道路”与“房
4、屋”的依赖,“道路”与“地道”的依赖。3.AbstractFactory模式主要在于应对“新系列”的需求变动。其缺点在于难以应对“新对象”的需求变动。4.AbstractFactory模式经常和FactoryMethod模式共同组合来应对“对象创建”的需求变化。(FactoryMethod是应对对象的变化,)Builder模式和AbstractFactory模式的区别Builder模式更强调的是对象部分的“构建”这样一个严格的过程,它构建的是整个对象的各个部分。它把构建稳定下来之后,各个部分在变化,最后组合成一个整体的对象。AbstractFactory模式构建的是一组系列交互的对象。互
5、相依赖、互相交互的对象和一个对象的各个部分是有区别的。三、FactoryMethod,工厂方法模式又称为多形性工厂;定义:一个用于创建对象的接口,让子类决定实例化哪一个类,FactoryMethod使一个类的实例化延迟到了子类。1)抽象工厂角色(AbstractCreator):这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。2)具体工厂角色(Creator):它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。3)抽象产品角色(AbstractProduct):它是具体产品继承的父类或
6、者是实现的接口。在java中一般有抽象类或者接口来实现。4)具体产品角色(Product):具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。四、Builder,建造模式建造模式,又叫生成器模式。定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.Builder模式主要用于“分步骤构建一个复杂的对象”。在这其中“分步骤”是一个稳定的算法(即Director),而复杂对象的各个部分(即ConcreteBuilder)则经常变化。变化点在哪里,封装哪里——Builder模式主要在于应对“复杂对象各个部分”的频繁需求变动。其缺点在于难以应对“分
7、步骤构建算法”的需求变动。(例如房屋构造如果经常改变,那么这个Builder模式也没有意义了)AbstractFactory模式解决“系列对象”的需求变化,Builder模式解决“对象部分”的需求变化。Builder模式通常和Composite模式组合使用。应用举例:数据库连接池(每一个连接的重用)五、Prototype,原始模型模式定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。通过给出一个原型对象来指明所
此文档下载收益归作者所有