23种设计模式
# 23种设计模式
# 零、设计原则
单一职责原则:一个类只负责一项职责
接口隔离原则:一个类对另一个类的依赖建立在最小接口上
依赖倒转原则:细节依赖抽象。面向接口编程。
里氏替换原则:子类中尽量不要重写父类的方法
开闭原则ocp:多扩展开放,对修改关闭
迪米特法则:只与直接朋友通信
合成复用原则:尽量使用合成/聚合的方式,而不是继承
# 一、创建型模式 5种
单例模式
一个类只有一个对象实例,减少内存空间的占用
分为饿汉式和懒汉式
饿汉式:类加载后立马创建对象实例
懒汉式:实例化时才创建对象实例,对于没有用到的类,不进行加载进一步减少内存空间的浪费。
实现要点:1.私有化构造方法,防止用户通过new的方式构建,这样就没法保证单例了。2.提供一个创建单例的静态公开方法。
饿汉式实现方法单一,静态方法和枚举方法。
懒汉式实现方法多,问题多。线程不安全->线程安全->代码阻塞,性能低->空指针问题->静态内部类最好
原型模式
简单工厂模式(不符合开闭原则)
结构:工厂类、抽象产品类、具体产品类
工厂类需要有一个创建产品的方法,输入产品名,返回对应的产品
工厂方法模式
在简单工厂模式的基础上多了抽象工厂类。一个抽象工厂对应多个具体产品的工厂,一个工厂对应一个产品。
抽象工厂模式(不符合开闭原则)
多了产品品牌和产品类别的概念
一个工厂就是一个品牌,能造各种类别的产品
建造者模式
# 二、结构型模式 7种
代理模式
适配器模式
装饰者模式
桥接模式
外观模式
组合模式
享元模式
# 三、行为型模式 11种
模板方法模式
策略模式
命令模式
责任链模式
状态模式
观察者模式
中介模式
迭代器模式
访问者模式
备忘录模式
解释器模式
编辑 (opens new window)