首页 > 其他分享 >结构类模式大PK

结构类模式大PK

时间:2022-11-09 17:39:43浏览次数:33  
标签:功能 对象 适配器 代理 模式 PK 装饰 结构


结构型模式,顾名思义讨论的是类和对象的结构,它采用继承机制来组合接口或实现(类结构型模式),或者通过组合一些对象,从而实现新的功能(对象结构型模式),结构类模式包括:适配器模式、组合模式、桥梁模式、装饰模式、门面模式、享元模式和代理模式,他们都是通过组合类或对象产生更大结构以适应更高层的逻辑需求

1、代理模式VS装饰模式

    装饰模式就是代理模式的一个特殊应用,两者的共同点是都具有相同的接口,不同点则是代理模式着重对代理过程的控制,而装饰模式则是对类的功能进行加强或减弱,它着重类的功能变化。

    用举例来说明两者的区别:让一个运动员跑步,先来看看用代理模式如何来实现:

结构类模式大PK_装饰模式

再来看看用装饰模式来实现让运动员跑步的实现UML图:

结构类模式大PK_适配器模式_02

   从两个图的类图上来看,两者十分的相似,就是实现代码也是非常的相似的,但是注意一点,代理模式是把当前的行为或功能委托给其他对象执行,代理类负责接口限定,它不对主题角色做任何的处理,保证原汁原味的调用,装饰模式是在要保证接口不变的情况下加强肋的功能,它保证的是被装饰的对象功能比原始对象丰富,但不准做条件判断以及参数过滤。

2、装饰模式VS适配器模式

     他们的功能有类似的地方,都是包装作用,都是通过委托方式实现其功能,不同的是,装饰模式包装的是自己的兄弟类,隶属于一个家族,适配器模式则装修非血缘关系类,把一个非本家族的对象伪装成本家族的对象,注意是伪装。

     举例子来说明两者的区别,用装饰模式与适配器模式分别来描述丑小鸭。

    ​

结构类模式大PK_装饰模式_03

   来看看适配器模式实现描述丑小鸭:这个角度是从鸭妈妈来分析的,将丑小鸭认为是鸭子,实现的UML图如下所示:

​​

结构类模式大PK_代理模式_04

、 现在来说说这两种模式的不同之处:

       1、意图不同,装饰模式关注的是加强对象的功能,而适配器模式关注的是转换

       2、施与对象不同:装饰模式装饰的对象必须是自己的同宗,而适配器模式则必须是两个不同的对象

       3、场景不同:装饰模式在任何情况下都可以用,而适配器模式是一种补救措施

       4、扩充性不同:装饰模式容易扩充,而适配器模式建立容易,拆除难

标签:功能,对象,适配器,代理,模式,PK,装饰,结构
From: https://blog.51cto.com/u_15870687/5837376

相关文章

  • 包装模式大PK
    包装模式包括:装饰模式、适配器模式、门面模式、代理模式、桥梁模式,下面来看看这5个包装模式的区别,用一个追星的例子来加以说明,首先来看代理模式:追星族只需要找代理要签名即......
  • 设计模式利剑三--抽象工厂方法模型
    定   义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类优   点:           1、封装性,每个产品的实现类不是高层模块要关心的,他们......
  • 门面模式VS中介者模式
          门面模式为复杂的子系统提供给一个统一的访问界面,它定义的而是一个高层接口,该接口使得子系统更加容易使用,避免外部模块深入到子系统内部而产生于子系统内部细......
  • 设计模式利剑4-模板方法模式
    定   义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤优   点:            1......
  • 设计模式利剑5-建造者模式
    定   义:将一个复杂对象的构建于它的表示分离,使得同样的构建过程可以创建不同的表示优   点:            1、封装性            2、建造者......
  • python之路27 单例模式实现方式、pickle模块、选课系统目录搭建
    单例模式实现的多种方式单例1:(提前定义一个名字)classC1:__instance=Nonedef__init__(self,name,age):self.name=nameself.age......
  • 设计模式利剑15-组合模式
    定     义:将对象组合成树形结构以表示“整体-部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性优     点:              1、高层......
  • python单例模式
    单例模式的意思单例模式是一个软件的设计模式,为了保证一个类,无论调用多少次产生的实例对象,都是指向同一个内存地址,仅仅只有一个实例(只有一个对象)。单例模式的优势1.全......
  • 设计模式简介及单例模式
    目录设计模式简介及单例模式单例模块实现的多种方式方式一:绑定给类的方法方式二:基于元类的类名加括号方式三:基于模块的单例模式方式四:定义一个装饰器实现单例模式方法五:基......
  • 单例模式、pickle模块、选课系统
    今日内容概要单列模式实现的多种方式pickle序列化模块选课系统需求分析选课系统架构设计选课系统目录搭建选课系统功能搭建选课系统管理员功能今日内容详细......