设计模式 | 详解 |
---|---|
设计模式 参考: https://www.jianshu.com/p/fc4b2e679a1e |
|
单例模式 整个应用中保证只有一个类的实例存在 参考: https://mp.weixin.qq.com/s/dlVXW6aW4wLcLpey9NxPig | 饿汉式单例类
懒汉式单例类
|
工厂模式 解释:不向外部提供具体的创建对象的方法,只要传入一个名字参数就可以获取对象
目的:将对象的创建和使用分离,使得系统更加符合“单一职责原则”,有利于对功能的复用和系统的维护
| (1)简单工厂模式是由一个具体的类去创建其他类的实例,父类是相同的,父类是具体的。 (一个工厂,生产多个产品)
(2)工厂方法模式是有一个抽象的父类定义公共接口,子类负责生成具体的对象,这样做的目的是将类的实例化操作延迟到子类中完成。 (product 中选择此种方式,一个抽象工厂,派生出多个具体工厂类,每个具体工厂类只能创建一个具体产品类的实例)
(3)抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无须指定他们具体的类。它针对的是有多个产品的等级结构。而工厂方法模式针对的是一个产品的等级结构。 (一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类可以创建多个具体产品类的实例。)
工厂方法模式: |
责任链模式 定义一个处理者的抽象类,按需添对应的具体实现的子类,然后把所有子类的按执行顺序关联起来。 参考:https://www.jianshu.com/p/c845028dd835
优点: 1.降低耦合,把请求者与处理细节分离,便于扩展。 缺点: 当处理对象过多时,会影响执行性能 |
Chain:定义处理请求的方法 & 提供设置关联类的方法。 |
代理模式 通过 【代理】这个中介,把 ”目标对象功能“ 与 ”访问者“ 分离 参考: https://www.jianshu.com/p/0f8f644fcb5e
优点: 1.职责清晰。
缺点: 实现代理模式需要额外的工作,有些代理模式的实现非常复杂 | 静态代理 |
装饰模式 含义:为一个现有对象添加额外的功能
解决:.在一个类在扩展功能时,如果通过继承的方式扩展,随着功能增加越来越多时,就会导致子类爆炸。 参考: https://www.jianshu.com/p/16e946f42ce1 | 优点:装饰模式比继承关系更灵活;装饰类和被装饰类可以独立发展,不会相互耦合; 缺点:多层装饰比较复杂 |
观察者模式 解决:一个对象状态改变给其他对象通知 | 优点:观察者模式可以实现表示层和数据逻辑层的分离;观察者和被观察者是抽象耦合的 缺点:通知过多观察者很耗时 |
策略模式 将算法或者行为封装成一个一个的类,任意地替换 | 优点:策略模式可以避免使用多重条件转移语句;可以灵活地增加新的算法或行为 缺点:客户端必须知道所有的策略类 |
适配器模式 参考: https://blog.csdn.net/taoszu/article/details/82795233 | 将一个类的接口转换成客户希望的另外一个接口。保留现有类所提供的服务,向客户提供接口,以满足客户的期望。 比如:一个蓝球队,教练通过一个交流接口和所有的球员进行交流,突然来了一个外援(教练不会外语),那现在既要保留原有的交流,又要能够和外国人交流,这时候就出现一个翻译(适配器角色),满足了需求。 |
|
|