架构师训练营 -week3- 学习总结
这一周主要学的是多态的各种玩法~
设计模式:
简单工厂模式:
适用于Factory几乎不变动的情况。
抽象工厂模式:
在简单工厂模式的基础上,对Factory进行了抽象。
单例模式:
使用原因有二:
只有一个实例,可以减少实例频繁创建和销毁带来的资源消耗。
当多个用户使用这个实例时,便于进行统一控制。
实现方式有三:
饿汉模式:
类加载时既创建实例对象。
饱汉模式:
延迟加载,类被使用时,才创建实例对象,存在线程安全。
DLC模式:
在饱汉模式的基础上,判断实例为空时,对线程加同步锁,再判断一次实例是否为空,若为空,则创建实例。
适配器模式:
主要用于重包装现用的与我们所需不同的类,比如现在有巧克力(接口/对象)、糖果(类/对象),为了方便送人(方便使用),会用个礼物袋(适配器类)将巧克力、糖果包装起来。
类的适配器:不建议用这种方式,容易违反LSP
对象的适配器:推荐使用。
模板方法模式:
是一种”类的行为模式“,常用于定义流程骨架。
形式:
抽象方法:强制子类实现该步骤,需标明abstract。
具体方法:子类可选择是否覆盖,如果不可被覆盖,需标明final
钩子方法:空方法,子类可选择性地覆盖。
可能产生的问题:
抽象算法和具体步骤耦合在一起,不饿能独立演化。
造成类的数量很多、类的层次很深,例如Spring的测试工具类。
策略模式:
常用于系统需要在多种算法中选择一种。例如java的Comparator接口。
策略模式和模板方法比较:
使用策略的人与策略的具体实现分离。
策略模式可以自由组合。
策略模式不关心何时使用何种方法,需由客户端决定。
组合模式:
是一种”对象的结构模式“,常用于树结构(打印树结构时,简直不要太爽!递归,您走好~)。
装饰器模式:
是一种”对象的结构模式“,用于加强现有对象的功能,保持接口不变。
装饰器、模板方法、策略模式的比较:
装饰器保持对象功能不变,扩展其外围功能。
模板方法、策略模式保持算法框架不变,扩展其内部实现。
装饰器和继承的比较:
都可以用来扩展对象的功能
装饰器时动态的,继承是静态的。
装饰器可以任意组合,无限嵌套。
感想:
一个好的框架,本身就能展示设计模式的美。过去半年,好几次拿起设计模式的书,翻开看了几页,总是没办法在脑海里留下深刻的印象。每每充满激情打开书,最后都会满脑子浆糊地关上书,基础知识薄弱,uml图不熟,元素间关系理不清,想象不出代码的样子,都是导致我没法更好地投入到书中的原因。
这3周,逼迫自己多看多练,终于摸到了设计模式的门,终于能够看着uml图想象出大概的代码实现,也能够体会到一些框架中处处体现的设计之美。
继续加油吧,少年!
版权声明: 本文为 InfoQ 作者【晓-Michelle】的原创文章。
原文链接:【http://xie.infoq.cn/article/7f8fff0b677ab9721468fa41b】。未经作者许可,禁止转载。
评论