欢迎来到天天文库
浏览记录
ID:35968491
大小:23.68 KB
页数:6页
时间:2019-04-29
《设计模式小结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、.-----摘自设计模式之禅一、创建类模式:包括工厂方法模式、建造者模式、抽象工厂模式、单例模式和原型模式,提供对象的创建和管理职能。1、单例模式是要保持在内存中只有一个对象。2、原型模式是要求通过赋值的方式产生一个新的对象。3、工厂方法模式和建造者模式都属于对象创建类模式,都用来创建类的对象。。区别:(1)意图不同工厂方法模式,关注的是一个产品整体。无须关注产品的各部分是如何创建出来的;建造者模式中,一个具体产品的产生是依赖各个部件的产生以及装配顺序,它关注的是“由零件一步一步地组装出产品对象”。简单的说,工厂模式是一个对象创建的组线条应用,建造者模式则是通过细线条勾勒出一个复杂对象,关注
2、的产品组成部分的创建过程。(2)产品的复杂度不同工厂方法模式创建的产品一般都是单一性质产品,而建造者模式创建的则是一个复合产品,它由各个部分复合而成,部件不同产品对象不同。它们的粒度大小不同,一般来说,工厂方法模式的对象粒度比较粗,建造者模式的产品对象粒度比较细。4、抽象工厂模式比建造者模式的尺度要大,它关注产品整体,而建造者模式关注构建过程,因此建造者模式可以很容易地构建出一个崭新的产品,只要导演类能够提供具体的工艺流程。也正因为如何,两者的应用场景截然不同,如果希望屏蔽对象的创建过程,只提供一个封装良好的对象,则可以选择抽象工厂方法模式。而建造者模式可以用在构件的装配方面,如通过装配不同
3、的组件或者相同组件的不同顺序,可以产生一个新的对象,它可以产生一个非常灵活的架构,方便地扩展和维护系统。二、结构类模式......包括适配器模式、桥梁模式、组合模式、装饰模式、门面模式、享元模式和代理模式。1、代理模式与装饰模式代理模式是把当前的行为或功能委托给其他对象执行,代理类负责接口限定:是否可以调用真实角色,以及是否对发送到真实角色的消息进行变形处理,它不对被主题角色(被代理类)的功能做任务处理。代理模式使用到极致开发就是AOP,使用了代理和反射的技术。装饰模式是在要保证接口不变的情况下加强肋的功能,它保证的是被修饰的对象功能比原始对象丰富(或减弱),但不做准入条件判断和准入参数过滤
4、,如是否可以执行类的功能,过滤输入参数是否合规等,这不是装饰模式关心的。在jdk的java.io.*包中大量使用装饰模式2、装饰模式与适配器模式a.意图不同装饰模式的意图是加强对象的功能,它不改变类的行为和属性,只是增加(减弱)功能;而适配器莫斯关注的则是转化,它的主要意图是两个不同对象之间的装好,它关注转换。b.施与对象不同装饰模式装饰的对象必须是自己得同宗,也就是相同的接口或父类,只有在具有相同的属性和行为的情况下,才能比较行为是增加还是减弱;适配器模式则必须是两个不同的对象,因为它着重于装换,只有两个不同的对象才有装换的必要。c.场景不同装饰模式在任何时候都可以使用,只要是想增强类的功
5、能,而适配器模式则是一个补救模式,一般出现在系统成熟或已经构建完毕的项目中,作为一个紧急处理手段采用d.扩展性不同装饰模式很容易扩展;但适配器模式建立模式,去除困难。......三、行为类模式包括责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式。1、策略模式与命令模式两个模式相似,特别是命令模式退化时,如无接受者,这种情况下,两个模式类图完全一样,代码实现也比较相似,区别:a.关注点不同策略模式关注的是算法替换的问题,一个新的算法投产,旧算法退休,或提供多种算法由调用者自己选择使用,算法的自由更替是它实现的要点。换
6、句话说,策略模式关注的是算法的完整性、封装性,只有具备了这两个条件才能保证其可以自由切换。命令模式则关注的是解耦问题,如何让请求者和执行者解耦是它需要首先解决的,解耦的要求就是把请求内容封装为一个个的命令,由接收者执行。由于封装成了命令,就同时可以对命令进行多种处理,例如撤销、记录等b.角色功能不同策略模式中的具体算法是负责一个完整的算法逻辑,它是不可再拆分的原子业务单元,一旦变更就是对算法整体的变更。而命令模式则不同,它关注命令的实现,也就是功能的实现。接收者对命令负责,与请求者无关。命令模式中的接收者只要符合六大设计原则,完全不用关心它是否完成了一个具体逻辑,它的影响范围也仅仅是抽象命令
7、和具体命令,对它的修改不会扩散到模式外的模块。c.策略模式使用于算法要求变换的场景,而命令模式适用于解耦两个有紧耦合关系的对象场合或多撤销的场景。2、策略模式与状态模式a.环境角色的职责不同......两者都有一个叫做context环境角色的类,但区别很大,策略模式的环境角色只是一个委托左右,负责算法的替换;而状态模式的环境角色不仅仅是委托行为,它还具有登记状态变化的功能,与具体的状态类协作,共同完成状态切换
此文档下载收益归作者所有