28.设计模式总结

【创建型模式】:在创建对象时,根据具体变化情况,对new操作进行封装,实现创建过程的复用

                    Singleton: 解决 “对象个数” 问题

                    Factory Method: 解决 “某个类的子类个数变化” 问题

                    Abstract Factory: 解决 “相关类的子类组成一个系列,系列个数变化” 问题

                    Builder: 解决 “用固定算法组合一个系列的相关子类,系列可变” 问题

                    Prototype: 解决 “需要的对象有现成的,直接从它克隆” 问题

(需要的“产品”已经存在的话,直接拿来用就是Singleton,用它克隆一个就是Prototype;

   需要的“产品”,其种类总是变化,就放到专门的工厂中来生产,用来生产此产品的工厂就是Factory Method,用来按系列生产相关多个“产品”的工厂就是Abstract Factory,增加一个组装部,按照固定步骤将一个系列的多个“产品”组装出一个新“产品”,就是Builder)

 

【结构型模式】:在构造类时,涉及到对象组合,将被组合对象理解成一个插件,其实就是对这个插件的妙用

                    Adapter: 解决 “改变已有类的接口,适应新环境” 问题

                    Bridge: 解决 “将类的实现与接口分离,复用接口,让实现独自变化” 问题

                    Composite: 解决 “集合类复用子元素的接口,封装对子元素的操作” 问题

                    Decorator: 解决 “复用已有接口,为指定对象扩展功能” 问题

                    Facade: 解决 “简化子系统接口,只将客户关注的部分抽离出来” 问题

                    Flyweight: 解决 “对象含有主键,使其在内存中唯一,通过复用节省内存” 问题

                    Proxy: 解决 “增加中间层,把适用于我的操作包装的已有系统上” 问题

(构建类时,如果已有类已经实现了它的大部分功能,就拿来复用,这个就是Adapter;

   在类的接口定义好后,如果它需要有多种实现,就把实现分离出来,每个实现封装一个类,这个是Bridge;

   定义集合类,原来一个人干的事,现在大家一起干(即:集合类实现子元素的接口),这个是Composite;

   要给某类元素增强功能,就继承该类的接口(表示为该类元素服务),留一个属性动态引用该类对象(表示为具体的哪个对象服务),不改变芯片内部结构,也不改变外部引脚,只在引脚前加个辅助电路,这就是Decorator;

   如果系统复杂到不容易让人了解,你就从中找到合适的积木块,组成一个特有的类,对外提供合适的服务,这个类就是Facade;

   如果直接使用别人提供的服务不方便,或者在使用前我总需要做一些繁琐的操作,就把这些琐事交给代理来做,由它来全权代理那项服务,它就是Proxy;)

 

【行为型模式】:在设计类时,根据具体变化的情况,给每个类分配合适的职责

                    Template Method: 解决 “算法框架稳定,子步骤经常变化,将实现子步骤的职责交给子类” 问题

                    Strategy: 解决 “类的接口稳定,算法经常变化,将实现算法的职责交给算法类” 问题

                    State: 解决 “对象的行为随状态改变,将行为的实现职责交给状态类,对象只用切换状态” 问题

                    Memento: 解决 “支持对象状态的保存/恢复,将备份/还原职责交给Memento类” 问题

                    Mediator: 解决 “多个对象协作实现功能,将协作的职责交给Mediator,各自完成能单独实现的职责” 问题

                    Chain Of Responsibility: 解决 “多个类有处理请求的职责,用链表给它们动态排队” 问题

                    Command: 解决 “行为的定义职责交给具体对象,行为的执行职责交给Command” 问题

                    Iterator: 解决 “定义遍历方式的职责交给集合对象,调用遍历的职责.net已实现” 问题

                    Interpreter: 解决 “有规律的特定领域问题,总可以分解成有限的小问题,定义Interpreter分解并解决每个小问题” 问题

                    Observer: 解决 “一对多对象通信,发出消息的职责交给被观察者,实现的职责交给具体对象,使用时关联通信对象” 问题

                    Visitor: 解决 “对象操作动态变化,将动态操作的实现职责交给Visitor,将指定动态操作的职责交给对象自己” 问题

 

另:芯片和外部电路是个理解设计模式的好例子,异曲同工啊!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值