Tips
- 如果面试方向是电商或者复杂领域,最好熟悉DDD领域驱动设计,你在项目中如何运用DDD,如果没有最好要了解DDD基本概念
- 设计模式最好能手写至少三种单例模式
- 提前准备项目中是如何使用设计模式的,或者平时看源码是如何运用设计模式的
原则
- 开闭原则:对扩展开放,对修改关闭(提供方可以对系统进行扩展(对扩展开放),当系统扩展了新的功能后不会影响到使用方,使用方不需要进行修改(对修改关闭))
- 里氏替换:子类可以扩展父类的功能,但不能改变父类原有的功能(将一个父类对象替换成它的子类对象后,该程序不会发生异常)
- 依赖倒置:针对接口编程,依赖于抽象而不依赖于具体
- 单一职责:一个类只负责一项职责
- 接口隔离:使用多个隔离的接口,比使用单个接口要好(客户端不应该依赖它不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上)
- 迪米特:一个对象应该对其他对象保持最少的了解
- 合成复用:尽量使用合成/聚合的方式,而不是使用继承
模式
创建型:关注对象的创建
- 工厂模式(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)