🚩Design Pattern - 设计模式

Principle 原则 x 6

  1. Open Close 开闭原则:对扩展开放,对修改关闭(通过接口和抽象类)

  2. Liskov Substitution 里氏替换:子类可替换父类。

    尽量将一些需要扩展的类或者存在变化的类设计为抽象类或者接口,并将其作为基类,在程序中尽量使用基类对象进行编程。

  3. Dependence Inversion 依赖倒转:针对接口编程,依赖于抽象而非具体

  4. Interface Segregation 接口隔离: 多个隔离的接口优于单个接口,以解耦合

  5. Demeter 迪米特:最少知道原则,实体间减少相互作用,模块独立

  6. Composite Reuse 合成复用:用聚合,而非继承。

Create 创建型

创建型模式特点
Singleton唯一性
Prototype克隆大对象
Builder内部结构复杂,关注顺序
Factory日志、数据库
如 ReflectiveChannelFactory
Abstract Factory多个产品族(换皮肤)

Structure 结构型

结构型模式特点
Adapter 适配器补救措施
TomcatRequest -> ServletRequest
Bridge 桥接扩展两个独立变化的维度,将类的抽象部分和它的实现部分分离出来。
Composite 组合部分-整体
Decorator 装饰器不增加子类来扩展类
如 Netty 中的WrappedByteBuf
Facade 外观隐藏系统复杂性,违背开闭原则
Flyweight 享元不可分辨的大量对象
Proxy 代理创建具有原对象的新对象。
1. 和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。
2. 和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。

Behavior 行为型

行为型模式特点
Chain of Responsibility 责任链多个对象同时处理一个请求
如 Netty 中的 ChannelPipeline(ChennelHandler)
Command 命令可支持撤销、恢复操作
Interpreter 解释器高频、特定类型的问题
Iterator 迭代器顺序访问聚合对象
Mediator 中介者1对n的网状结构->1对1的星形结构
Memento 备忘录常用于实现撤销和重做功能,也可以用于实现数据快照、事务管理等应用场景
Observer 观察者某对象通知其他对象
如 Netty 中的 ChannelFuture#addListener
State 状态行为随状态而改变,替代 if…else… 语句
Strategy 策略动态在多种行为中选择一种
Template 模板抽离通用方法,加final修饰
Visitor 访问者违反迪米特、依赖倒转原则 SimpleFileVisitor

管道+过滤器模式(Channel+Filter)

所有的复杂处理,都可以抽象为管道+过滤器模式(Channel+Filter),用于服务的过滤

  • 实现额外的增强处理,如AOP
  • 中断当前处理流程,返回特定数据
0%