常见的设计模式
什么是设计模式?
设计模式是对设计原则的具体化,设计模式可以让我们在特定的情况下使用特定的设计,可以节省时间成本,提高工作效率。
常用的6种架构设计模式
- 单例模式:
活动的单例只有一个实例。一般只有一个数据库、一个业务应用层、一个后台管理系统。适合需要做全局统一控制的场景,如编码生成器。
优点:结构简单、开发速度快;缺点:性能差、没有高可用、拓展性差,不适合大规模部署。
- 工厂模式
包含的角色有:工厂、具体产品、抽象产品
工厂模式是将消费者与产品分隔开,消费者需要某种产品向工厂请求即可。如数据库客户端,可以接纳mysql、oracle。
优点:客户类与工厂类解耦,消费者只需要向工厂请求,无需修改就可以接纳新产品;缺点:当产品修改时,工厂类也要做相应修改。
- 装饰模式
装饰模式以对客户端透明的方式扩展对象,是继承关系的一个替代方案,提供比继承更多的灵活性,动态的给对象添加功能。
优点:比继承更灵活,可以通过不同的装饰器组合为对象扩展N个新功能而不影响对象本身。缺点:当对象装饰器过多,增加系统复杂度,增加代码的阅读理解成本。
- 策略模式
定义了算法族,分别封装起来,让它们之间可以相互替换,让算法的变化独立于使用算法的客户。
优点:用户可以在不修改原有系统的基础上选择算法或行为。
缺点:调用时必须提前知道有哪些策略模式类方能决定当前场景使用何种策略。
- 观察者模式
定义了对象间一对多依赖,当一个对象改变状态时,他的所有依赖者都会受到通知并自动更新。适用一对多的业务场景,如订单调度通知。
优点:将复杂的串行处理逻辑变为单元化的独立处理逻辑,被观察者只需要发出消息,不需要关心谁消费消息,观察者只处理自己关心的内容。逻辑相互隔离。
缺点:观察者较多时需要花费一定的开销来发消息,但是消息可能仅有一个观察者消费。
- 代理模式
常见的代理模式:远程代理、防火墙代理、虚拟代理。
优点:代理可以调用方与被调用方,降低系统耦合度,可以控制安全性,减小系统开销等作用。
缺点:增加一层代理,增加了系统复杂度,降低了系统的响应速度。
参考:http://www.itheima.com/news/20171114/162425.html、https://mp.weixin.qq.com/s/GdqT92fRObAbgvdZi08dLg、https://mp.weixin.qq.com/s/Wdrj5vbIKXMZ7AJORiXpEQ