架构师训练营 -week3- 学习总结

用户头像
晓-Michelle
关注
发布于: 2020 年 06 月 24 日
架构师训练营 -week3- 学习总结

这一周主要学的是多态的各种玩法~

设计模式:

简单工厂模式:

适用于Factory几乎不变动的情况。

抽象工厂模式:

在简单工厂模式的基础上,对Factory进行了抽象。

单例模式:

使用原因有二:

只有一个实例,可以减少实例频繁创建和销毁带来的资源消耗。

当多个用户使用这个实例时,便于进行统一控制。

实现方式有三:

饿汉模式:

类加载时既创建实例对象。

饱汉模式:

延迟加载,类被使用时,才创建实例对象,存在线程安全。

DLC模式:

在饱汉模式的基础上,判断实例为空时,对线程加同步锁,再判断一次实例是否为空,若为空,则创建实例。

适配器模式:

主要用于重包装现用的与我们所需不同的类,比如现在有巧克力(接口/对象)、糖果(类/对象),为了方便送人(方便使用),会用个礼物袋(适配器类)将巧克力、糖果包装起来。

类的适配器:不建议用这种方式,容易违反LSP

对象的适配器:推荐使用。

模板方法模式:

是一种”类的行为模式“,常用于定义流程骨架。

形式:

抽象方法:强制子类实现该步骤,需标明abstract。

具体方法:子类可选择是否覆盖,如果不可被覆盖,需标明final

钩子方法:空方法,子类可选择性地覆盖。

可能产生的问题:

抽象算法和具体步骤耦合在一起,不饿能独立演化。

造成类的数量很多、类的层次很深,例如Spring的测试工具类。

策略模式:

常用于系统需要在多种算法中选择一种。例如java的Comparator接口。

策略模式和模板方法比较:

使用策略的人与策略的具体实现分离。

策略模式可以自由组合。

策略模式不关心何时使用何种方法,需由客户端决定。

组合模式:

是一种”对象的结构模式“,常用于树结构(打印树结构时,简直不要太爽!递归,您走好~)。

装饰器模式:

是一种”对象的结构模式“,用于加强现有对象的功能,保持接口不变。

装饰器、模板方法、策略模式的比较:

装饰器保持对象功能不变,扩展其外围功能。

模板方法、策略模式保持算法框架不变,扩展其内部实现。

装饰器和继承的比较:

都可以用来扩展对象的功能

装饰器时动态的,继承是静态的。

装饰器可以任意组合,无限嵌套。

感想:

一个好的框架,本身就能展示设计模式的美。过去半年,好几次拿起设计模式的书,翻开看了几页,总是没办法在脑海里留下深刻的印象。每每充满激情打开书,最后都会满脑子浆糊地关上书,基础知识薄弱,uml图不熟,元素间关系理不清,想象不出代码的样子,都是导致我没法更好地投入到书中的原因。

这3周,逼迫自己多看多练,终于摸到了设计模式的门,终于能够看着uml图想象出大概的代码实现,也能够体会到一些框架中处处体现的设计之美。

继续加油吧,少年!

发布于: 2020 年 06 月 24 日 阅读数: 36
用户头像

晓-Michelle

关注

还未添加个人签名 2020.05.30 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 -week3- 学习总结