设计模式

觉知此事要躬行...

Posted by Lydia on July 24, 2020

Tips

  1. 如果面试方向是电商或者复杂领域,最好熟悉DDD领域驱动设计,你在项目中如何运用DDD,如果没有最好要了解DDD基本概念
  2. 设计模式最好能手写至少三种单例模式
  3. 提前准备项目中是如何使用设计模式的,或者平时看源码是如何运用设计模式的

原则

  • 开闭原则:对扩展开放,对修改关闭(提供方可以对系统进行扩展(对扩展开放),当系统扩展了新的功能后不会影响到使用方,使用方不需要进行修改(对修改关闭))
  • 里氏替换:子类可以扩展父类的功能,但不能改变父类原有的功能(将一个父类对象替换成它的子类对象后,该程序不会发生异常)
  • 依赖倒置:针对接口编程,依赖于抽象而不依赖于具体
  • 单一职责:一个类只负责一项职责
  • 接口隔离:使用多个隔离的接口,比使用单个接口要好(客户端不应该依赖它不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上)
  • 迪米特:一个对象应该对其他对象保持最少的了解
  • 合成复用:尽量使用合成/聚合的方式,而不是使用继承

模式

创建型:关注对象的创建

  • 工厂模式(Factory Pattern)
  • 抽象工厂模式(Abstract Factory Pattern)
  • 单例模式(Singleton Pattern)
  • 建造者模式(Builder Pattern)
  • 原型模式(Prototype Pattern)

结构型:关注类和对象的组合

  • 适配器模式(Adapter Pattern)
  • 桥接模式(Bridge Pattern)
  • 过滤器模式(Filter、Criteria Pattern)
  • 组合模式(Composite Pattern)
  • 装饰器模式(Decorator Pattern)
  • 外观模式(Facade Pattern)
  • 享元模式(Flyweight Pattern)
  • 代理模式(Proxy Pattern)

行为型:关注对象之间的通信

  • 责任链模式(Chain of Responsibility Pattern)
  • 命令模式(Command Pattern)
  • 解释器模式(Interpreter Pattern)
  • 迭代器模式(Iterator Pattern)
  • 中介者模式(Mediator Pattern)
  • 备忘录模式(Memento Pattern)
  • 观察者模式(Observer Pattern)
  • 状态模式(State Pattern)
  • 空对象模式(Null Object Pattern)
  • 策略模式(Strategy Pattern)
  • 模板模式(Template Pattern)
  • 访问者模式(Visitor Pattern)

参考

设计模式-RUNOOB

Java设计模式:23种设计模式全面解析(超级详细)

Java设计模式面试题 01 - 六大原则