设计模式
七大原则
开闭原则
一个软件实体,如类、模块和函数应该对扩展开放,对修改关闭。
单一职责原则
一个类应该只有一个发生变化的原因。
里氏替换原则
所有引用基类的地方必须能透明地使用其子类的对象。
依赖倒置原则
1、上层模块不应该依赖底层模块,它们都应该依赖于抽象。
2、抽象不应该依赖于细节,细节应该依赖于抽象。
接口隔离原则
1、客户端不应该依赖它不需要的接口。
2、类间的依赖关系应该建立在最小的接口上。
迪米特法则
只与你的直接朋友交谈,不跟“陌生人”说话。
组合/聚合复用原则
尽量使用对象组合/聚合,而不是继承关系达到软件复用的目的。
创建型
单例模式
饿汉式
全局只会存在该类的唯一一个对象。在加载类的时候就已经开始初始化,而非等到使用的时候才进行初始化,此种方式线程安全,但可能存在资源浪费,即不会使用其对象还是会创建该对象。
静态常量的方式枚举的方式
懒汉式
只有在使用的时候才会进行创建该对象,但是由于可能存在多线程调用问题,所以需要注意线程安全问题。
1.synchronized锁住创建方法
2.双重校验锁(DCL,即 double-checked locking)
3.静态内部类的方式
工厂模式
通过工厂类能够进行生成所需对象,而非手动创建。一般会让工厂构造方法为私有,防止创建工厂的对象。只需调用工厂的某方法就可生成对应的对象。
抽象工厂模式
工厂模式的进阶用法,通过抽象工厂进行生成工厂。
建造者模式
把对象的组合构造或者某些属性设置进行封装,使之在创建对象的时候直接满足某些场景的数据,而非全由用户手动设置,防止构建出不符合的对象。
原型模式
根据某些已经存在的对象而无需再次手动创建此对象和赋值操作。