架构师训练营第三周课程笔记及心得

用户头像
Airs
关注
发布于: 2020 年 10 月 04 日

第三周学习笔记及心得



学习笔记



设计模式的作用:



什么是设计模式:



设计模式描述了一种问题的通用解决方案。这种问题是在我们的环境中不停的出现的。设计模式也是一种可重复使用的解决方案。



设计的模式的出现:



为了实现程序的强内聚,低耦合,开发过程中需要遵从OOD原则,为了满足这些原则,发明了一些设计模式,这些设计模式更具体的指导我们如何进行代码开发。



设计模式的组成部分:



  1. 模式名字:如适配器模式

  2. 待解决问题:这个模式解决了什么问题

  3. 解决方案:具体是如何解决的,如,用了适配器的类,这个类的具体作用

  4. 结论:这个模式的优缺点是什么



单例模式:



为什么(何时)要用单例模式



  1. 性能需求:只有一个实例,可以减少实例频繁创建和销毁带来的资源消耗。

  2. 功能需求:当多个用户使用这个实例时,方便统一控制管理。

  3. 两种实现方法:

  4. 特点:



适配器模式:



  1. 当我们想使用某个类中的一个方法(只能用这个方法,其他方法不行的情况)但是又不能直接调用类获取其中的方法时(继承),可以使用适配器模式来实现。也可以是对象的适配,通过适配成成员变量的方式(组合),实现将对象中的方法通过适配器暴露给需要调用方。尽量使用对象适配的方式实现(组合优于继承)



模板方法模式:



模板方法模式特点:



  1. 是用继承的方式来实现扩展功能的基本模式之一

  2. 是一种类的行为模式

  3. 基类负责算法和轮廓和骨架

  4. 子类负责算法的具体实现



模板方法模式实现形式:



  1. 抽象方法(尽量使用):父类中定义抽象方法,强制子类实现步骤

  2. 具体方法:父类中已经实现了方法,子类不需要覆盖或者也可以覆盖

  3. 钩子方法:父类中是个空方法不只是定义,但是内容为空,子类可以用适配器实现,也可以用覆盖发方式实现该方法



策略模式:



策略模式特点:



  1. 通过组合的方式来实现功能扩展的另一种基本模式

  2. 是一种对象的行为模式

  3. 通过组合来实现扩展

  4. 通常,策略模式和模板方法结合使用



什么时候使用策略模式:



  1. 程序、系统需要在多种算法中选择一种

  2. 重构系统时,将条件语句转换成对于策略的多态性调用



策略模式优/缺点:



优点:



  1. 将使用策略的人与策略的具体实现分离

  2. 策略对象可以自由组合



缺点:



  1. 策略模式只封装了算法的具体实现,方便添加和替换,但并不关心何时使用何种算法,这个需要由客户端自己实现选择



组合模式:



是一种对象的结构模式,适用于树状结构实现的一种模式,有遍历等需要循环的算法



装饰器模式:



装饰器模式特点:



  1. 是一种对象的结构模式。

  2. 在实现具体的方法之前,可以先包装起来,然后在实现执行,用于不想改变接口但是又有单独需求需要实现时

  3. 不改变客户端接口

  4. 扩展现有对象的功能

  5. 装饰器也被笼统的叫做包装器(wrapper)



装饰器也叫做包装器:



  1. 与适配器模式的区别,适配器也被叫做包装器,适配器会改变接口,但是装饰器不改变原有接口,而是通过另一个接口去装饰了接口。

  2. 包装器,可以多次装饰,多个方向装饰。



装饰器优缺点:



  1. 装饰器和模板方法、策略模式比较

  2. 装饰器和继承的比较



依赖注入模式:



对象创建关系依赖关系,A创建B,实现B依赖A,A控制B,变成,A注入B,实现B对A的依赖



案例:



Junit中的设计模式:



Junit时java中的单元测试,是一个典型的模板方法模式,通过基类控制运作流程,只让用户写具体实现,达到控制测试流程的目的



  1. Junit的实现步骤:

  2. junit通过基层类的方法,保证了test的运行顺序:



Spring中的设计模式:



Spring使用了MVC,为了解决早期spring框架中庞杂的servlet管理问题,提出了处理业务的模型和最后展现的html视图进行分离,通过控制器进行分发管理的一种模式。是一种依赖注入模式,不通过继承和组合,实现控制类的模式。



思考:策略模式和适配器模式的区别



  1. 都是在一个已经存在的类中找到合适的方法调用的结构

  2. 策略模式:是在多个已经存在的,封装好的接口中找到适合自己的方法,是一种对象的行为模式

  3. 适配器模式:是已经存在的一个类中有方法,但是并不是非常符合需要,又不能多写一个一样名字的方法时,使用适配器,将存在的方法改造为合适的接口提供调用的形式,是一种结构模式



关于设计模式更好的整理与全部设计模式的讲解参考:

https://www.runoob.com/design-pattern/design-pattern-tutorial.html



发布于: 2020 年 10 月 04 日 阅读数: 23
用户头像

Airs

关注

Emmmmmmm 2018.02.28 加入

Emmmmmmm

评论

发布
暂无评论
架构师训练营第三周课程笔记及心得