1. 设计原则
开闭原则 |
对扩展开放,对修改关闭。 |
里氏替换原则 |
子类可以扩展父类的功能,但不能改变父类原有的功能。 |
防止继承泛滥 |
|
依赖倒转原则 |
要面向接口编程,不要面向实现编程。 |
高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象 |
|
单一职责原则 |
一个类只干一件事,实现类要单一 |
接口隔离原则 |
接口最小化原则 |
一个接口只干一件事,接口要精简单一 |
|
迪米特法则 |
最少知道原则 |
一个对象应该对其他对象保持最少的了解。 |
|
只依赖应该依赖的对象,只暴露应该暴露的方法。 |
|
合成复用原则 |
组合/聚合复用原则 |
尽量使用合成/聚合的方式,而不是使用继承。 |
2. 设计模式
2.1 创建型模式
懒汉式单例 |
|
|
双层校验锁单例 |
|
|
容器单例(饿汉模式) |
|
|
静态内部类单例 |
|
|
枚举单例 |
|
|
Builder |
||
用来创建复杂的复合对象 |
开放个性配置步骤 |
|
Cloneable |
||
通过拷贝原型创建新的对象 |
高效创建对象 |
|
浅复制 |
clone() |
|
浅拷贝得到的对象跟原始对象共享数据; |
||
|
||
|
||
深复制 |
深拷贝既复制索引,也复制数据本身,得到完全独立的对象。 |
|