设计模式:(五)相似模式比较.pdfVIP

  • 5
  • 0
  • 约5.23千字
  • 约 4页
  • 2023-06-09 发布于湖北
  • 举报
设设计计模模式式 :: ((五五))相相似似模模式式⽐⽐较较 ⼀⼀、、⼯⼯⼚⼚⽅⽅法法模模式式VVSS建建造造者者模模式式 ⼯⼚⽅法模式注重的是整体对象的 建⽅法,⽽建造者模式注重的是部件构建的过程,旨在通过⼀步⼀步地精确构造 建出⼀个复杂的对象。 ⼯⼚⽅法模式和建造者模式都属于对象 建类模式,都⽤来 建类的对象。但它们之间的区别还是⽐较明显的: 意图不同 在⼯⼚⽅法模式⾥,我们关注的是⼀个产品整体 ;但在建造者模式中,⼀个具体产品的产⽣是依赖各个部件的产⽣以及装配顺序,它关注的 是 “由零件⼀步⼀步地组装出产品对象”。简单地说,⼯⼚模式是⼀个对象 建的粗线条应⽤,建造者模式则是通过细线条勾勒出⼀个复杂对 象,关注的是产品组成部分的 建过程。 产品的复杂度不同 ⼯⼚⽅法模式 建的产品⼀般都是单⼀性质产品,都是⼀个模样,⽽建造者模式 建的则是⼀个复合产品,它由各个部件复合⽽成,部件不同 产品对象当然不同。这不是说⼯⼚⽅法模式 建的对象简单,⽽是指它们的粒度⼤⼩不同。⼀般来说,⼯⼚⽅法模式的对象粒度⽐较粗,建造 者模式的产品对象粒度⽐较细。 ⼆⼆、、抽抽象象⼯⼯⼚⼚模模式式VVSS建建造造者者模模式式 抽象⼯⼚模式实现对产品家族的 建,⼀个产品家族是这样的⼀系列产品:具有不同分类维度的产品组合,采⽤抽象⼯⼚模式则是不需要关⼼构建 过程,只关⼼什么产品由什么⼯⼚⽣产即可。⽽建造者模式则是要求按照指定的蓝图建造产品,它的主要⽬的是通过组装零配件⽽产⽣⼀个新产 品。 三三、、代代理理模模式式VVSS装装饰饰模模式式 装饰模式就是代理模式的⼀个特殊应⽤,两者的共同点是都具有相同的接⼝,不同点则是代理模式着重对代理过程的控制,⽽装饰模式则是对类的 功能进⾏加强或减弱,它着重类的功能变化。 代理模式 是把当前的⾏为或功能委托给其他对象执⾏,代理类负责接⼝限定 :是否可以调⽤真实⾓⾊,以及是否对发送到真实⾓⾊的消息进⾏变形处 理,它不对被主题⾓⾊ (也就是被代理类)的功能做任何处理,保证原汁原味的调⽤。代理模式使⽤到极致开发就是AOP,是Spring架构开发 必然要使⽤到的技术,它就是使⽤了代理和反射的技术。 装饰模式 是在要保证接⼝不变的情况下加强类的功能,它保证的是被修饰的对象功能⽐原始对象丰富 (当然,也可以减弱),但不做准⼊条件判断和准 ⼊参数过滤,如是否可以执⾏类的功能,过滤输⼊参数是否合规等,这不是装饰模式关⼼的。 四四、、装装饰饰模模式式VVSS适适配配器器模模式式 装饰模式和适配器模式在通⽤类图上没有太多的相似点,差别⽐较⼤,但是它们的功能有相似的地⽅ :都是包装作⽤,都是通过委托⽅式实现其功 能。不同点是 :装饰模式包装的是 ⾃⼰的兄弟类,⾪属于同⼀个家族 (相同接⼝或⽗类),适配器模式则修饰⾮⾎缘关系类,把⼀个⾮本家族的对 象伪装成本家族的对象,注意是伪装,因此它的本质还是⾮相同接⼝的对象。 意图不同 装饰模式的意图是加强对象的功能,不改变类的⾏为和属性,只是增加 (当然了,减弱类的功能也是可能存在的)功能,使美丽更加美丽,强 壮更加强壮,安全更加安全 ;⽽适配器模式关注的则是转化,它的主要意图是两个不同对象之间的转化。 施与对象不同 装饰模式装饰的对象必须是 ⾃⼰的同宗,也就是相同的接⼝或⽗类,只要在具有相同的属性和⾏为的情况下,才能⽐较⾏为是增加还是减弱 ; 适配器模式则必须是两个不同的对象,因为它着重于转换,只有两个不同的对象才有转换的必要。 场景不同 装饰模式在任何时候都可以使⽤,只要是想增强类的功能,⽽适配器模式则是⼀个补救模式,⼀般出现在系统成熟或已经构建完毕的项 ⽬中, 作为⼀个紧急处理⼿段采⽤。 扩展性不同 装饰模式很容易扩展 !今天不⽤这个修饰,好,去掉 ;明天想再使⽤,好,加上。这都没有问题。⽽且装饰类可以继续扩展下去;但是适配器 模式就不同了,它在两个不同对象之间架起了⼀座沟通的桥梁,建⽴容易,去掉就⽐较困难了,需要从系统整体考虑是否能够撤销。 五五、、命命令令模模式式VVSS策策略略模模式式 命令模式和策略模式的类图确实很相似,只是命令模式多了⼀个接收者 (Receiver)⾓⾊。它们虽然同为⾏为类模式,但是两者的区别还是很明 显的。策略模式的意图是封装算法,它认为 “算法”已经是⼀个完整的、不可拆分的原⼦业务 (注意这⾥是原⼦业务,⽽不是原⼦对象),即其意

文档评论(0)

1亿VIP精品文档

相关文档