设计模式辨析篇
# 设计模式辨析篇
# 一、包装设计模式(装饰器模式、适配器模式、外观模式、代理模式)的区别
装饰器模式 将一个对象包装起来,增加新的行为和责任
不改变接口,但加入责任
适配器模式 将一个对象包装起来,转换其接口
将一个接口转成另一个接口,改变接口使其符合客户期望
外观模式 将一群对象包装起来,简化其接口
让接口更简单,提供子系统的一个简化接口
代理模式 将一个对象包装起来,控制和管理对它的访问
控制和管理对对象的访问
# 二、观察者模式和发布订阅模式的区别
从表面上看:
- 观察者模式里,只有两个角色 —— 观察者 + 被观察者
- 而发布订阅模式里,却不仅仅只有发布者和订阅者两个角色,还有一个经常被我们忽略的 —— Broker
从使用层面上讲:
- 观察者模式,多用于单个应用内部
- 发布订阅模式,多用于跨应用模式(cross-application pattern),比如我们常用的消息中间件
# 三、状态模式和策略模式的区别
策略模式和状态模式都属于行为模式,很相似,它们的区别主要在于行为上,而不是结构上
策略模式 定义了一组可互相代替的算法;采用何种策略由外界(客户端)决定
状态模式 整体构成一个流程,各个流程有一定的顺序,状态的变迁是由对象的内部条件决定
# 四、单例模式和享元模式的区别?
单例模式属于创建型模式,保证一个类只有一个实例。而享元模式是结构型模式,重在减少内存占用和提高性能,一个类不一定只有一个实例。