1. 设计模式列表
1.1 创建型模式
1.1.1 Abstract Factory
1.1.2 Builder
1.1.3 Factory Method
1.1.4 Prototype
1.1.5 Singleton
1.2 结构型模式
1.2.1 Adapter
1.2.2 Bridge
1.2.3 Composite
1.2.4 Decorator
1.2.5 Facade
1.2.6 Flyweight
1.2.7 Proxy
1.3 行为型模式
1.3.1 Chain of Responsibility
1.3.2 Command
1.3.3 Interpreter
1.3.4 Iterator
1.3.5 Mediator
1.3.6 Memento
1.3.7 Observer
1.3.8 State
1.3.9 Strategy
1.3.10 Template Method
1.3.11 Visitor
要能想到适用场景和类图
面向对象6大原则
1. 单一职责原则 Single Responsibility Principle
- 一个类别太大, 别太累, 负责单一的职责
- Person类: 只要涉及person的属性就行了, 不要涉及Person的管理
- PersonManager: 负责Person的管理逻辑
- 要做到高内聚, 低耦合
2. 开闭原则 Open-Closed Principle
- 对扩展开放 , 对修改关闭
- 尽量不修改原来代码的情况下进行扩展
- 抽象化/ 多态 是开闭原则的关键
3. 里氏替换原则 Liscov Substitution Principle
- 所有使用父类的地方, 必须能够透明的使用子类对象
- 子类可以透明替换父类
举个例子
Parent p = new Child();
p.move();
如果Child的move方法改了Parent的move方法的语义了, 那就不符合里氏替换原则
比如重写了move方法, 或者重载了多个move方法, 并且用public修饰公开了出去, 造成了使用上的困扰
4. 依赖倒置原则 Dependency Inversion Principle
- 依赖抽象, 而不是依赖具体类
- 面向 ( 抽象 / 接口 ) 编程
5. 接口隔离原则 Interface Segregation Principle
- 每个接口应该承担独立的角色, 不干不该自己干的事儿
- Flyable , Runnable不该合二为一
- 避免子类实现不需要实现的方法
- 需要对客户提供接口的时候, 只需要暴露最少的接口
- 接口的职责要单一
6. 迪米特法则 Law of Demeter
- 降低耦合, 和其他类的耦合度变低
- 尽量不要和陌生人说话
- 在迪米特法则中, 对于一个对象, 非陌生人包括以下几类:
- 当前对象本身 ( this )
- 以参数形式传入到当前对象方法中的对象
- 当前对象的成员对象
- 如果当前对象的成员对象是一个集合, 那么集合中的元素也都是朋友
- 当前对象所创建的对象
但是各种Util工具类就算是陌生人, 该用的时候, 还是得用