设计模式初探析

“设计模式”是一个很高大上的词汇,但也是最虐程序员的词汇。。。因为它很重要,但又是最难理解和运用的。鉴于笔者现在还没运用的如火纯青,所以只对常见的十个设计模式的应用场合进行介绍,这样,至少可以给大家做个提醒,当你遇到某个场景时,会联想到具体的设计模式,这样有导向性的学习也许效果会更好。

1、单例模式
应用场景:确保某个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象只应该有且只有一个。例如,创建一个对象需要消耗的资源过多,如要访问IO和数据库资源,这时就要考虑使用单例模式。

2、工厂模式
应用场景:在任何需要生成复杂对象的地方,都可以使用工厂方法模式。复杂对象适合使用工厂模式,用new就可以完成创建的对象无需使用工厂模式。

3、策略模式
应用场景:
(1)针对同一类型问题的多种处理方式,仅仅是具体行为有差别时。
(2)需要安全的封装多种同一类型的操作时。
(3)出现同一抽象类有多个子类,而又需要使用if-else或者switch-else来选择具体子类时。

4、状态模式
(1)一个对象的行为取决于它的状态,并且它必须在运行时根据状态改变它的行为。
(2)代码中包含大量与对象状态有关的条件语句。例如,一个操作中含有庞大的多分支语句,且这些分支依赖于该对象的状态。

5、命令模式
需要抽象出待执行的动作,然后以参数的形式提供出来——类似于过程设计中的回调机制,而命令模式正式回调机制的一个面向对象的替代品。

6、观察者模式
(1)关联行为场景,需要注意的是,关联行为是可拆分的,而不是“组合”关系。
(2)事件多级触发场景。
(3)跨系统的消息交换场景,如消息队列、事件总线的处理机制。

7、模板方法
(1)多个子类有公有的方法,并且逻辑基本相同时。
(2)重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现。
(3)重构时,模板方法模式是一个经常使用的模式,把相同的代码抽取到父类中,然后通过钩子函数约束其行为。

8、适配器模式
(1)系统需要使用现有的类,而此类的接口不符合系统的需要,即接口不兼容。
(2)想建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作。
(3)需要一个统一的输出接口,而输入端的类型不可预知。

9、装饰模式
需要透明且动态地扩展类的功能时。

10、外观模式
(1)为一个复杂子系统提供一个简单接口
(2)当你需要构建一个层次结构的子系统时,使用Facade模式定义子系统中每层的入口点。如果子系统之间是相互依赖的,你可以让它们仅通过Facade接口进行通信,从而简化了它们之间的依赖关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值