设计模式 结构型模式

343 阅读2分钟

这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战

更加关注基础类、对象组合,形成新的对象,从而拥有新的功能

适配器模式

感觉像是一个facade,通过这个facade,也就是适配器,通过这个转换器去做原接口到所需对象的转换

目的:

  • 使得现有的类、对象满足新环境的使用要求
  • 让旧系统适应新系统

实现手段:

  • 适配器继承现有类
  • 原有类作为成员的方式被依赖
  • 直接调用原有类的方式

来实现对原有类的适配

桥接模式

强调抽象

感觉强调的是类定义的时候,属性成员应该更多依赖功能抽象(interface),而不是具体的类

  • 减少类与类之间的耦合

过滤器模式

强调抽象

实际上就是实现了 过滤器 interface{}的类

  • 过滤器interface{}接收一个 可过滤interface{} list,返回一个过滤后的 可过滤interface{} list
  • 通过interface{} 的形式规定过滤逻辑标准(抽象)以及可过滤对象标准(抽象)

组合模式

单个对象内部也拥有整个层级结构的信息

  • 通过操作单个对象,可以获取、操作整个层级结构
  • 组合对象即单个对象

这个模式感觉没啥好说的

装饰器模式

使用函数闭包的方式、子成员属性的方式给当前接口抽象动态添加功能的同时,不影响原有的类内部结构

  • 只修改装饰器类的逻辑,并且对于装饰器类而言其应该是可以装饰所有实现实现了某个抽象的类

函数闭包:

子成员属性:

享元模式

适用场景:

  • 当工厂模式需要创建的对象非常大的时候(包含很多内容的时候)
    • 组建过程需要的时间、性能较大
    • 过多的大对象会导致内存溢出
  • 对象内部的大量对象可以重用的时候
    • 甚至对象本身可以重用

可以将对象中可以重用的、不变的属性抽离出来,通过map的方式缓存

获取对象的时候,就从缓存读取(或者使用不变属性快速组装)

感觉有点像工厂模式的延申