架构师训练营第三周课程笔记及心得
第三周学习笔记及心得
学习笔记
设计模式的作用:
什么是设计模式:
设计模式描述了一种问题的通用解决方案。这种问题是在我们的环境中不停的出现的。设计模式也是一种可重复使用的解决方案。
设计的模式的出现:
为了实现程序的强内聚,低耦合,开发过程中需要遵从OOD原则,为了满足这些原则,发明了一些设计模式,这些设计模式更具体的指导我们如何进行代码开发。
设计模式的组成部分:
模式名字:如适配器模式
待解决问题:这个模式解决了什么问题
解决方案:具体是如何解决的,如,用了适配器的类,这个类的具体作用
结论:这个模式的优缺点是什么
单例模式:
为什么(何时)要用单例模式
性能需求:只有一个实例,可以减少实例频繁创建和销毁带来的资源消耗。
功能需求:当多个用户使用这个实例时,方便统一控制管理。
两种实现方法:
特点:
适配器模式:
当我们想使用某个类中的一个方法(只能用这个方法,其他方法不行的情况)但是又不能直接调用类获取其中的方法时(继承),可以使用适配器模式来实现。也可以是对象的适配,通过适配成成员变量的方式(组合),实现将对象中的方法通过适配器暴露给需要调用方。尽量使用对象适配的方式实现(组合优于继承)
模板方法模式:
模板方法模式特点:
是用继承的方式来实现扩展功能的基本模式之一
是一种类的行为模式
基类负责算法和轮廓和骨架
子类负责算法的具体实现
模板方法模式实现形式:
抽象方法(尽量使用):父类中定义抽象方法,强制子类实现步骤
具体方法:父类中已经实现了方法,子类不需要覆盖或者也可以覆盖
钩子方法:父类中是个空方法不只是定义,但是内容为空,子类可以用适配器实现,也可以用覆盖发方式实现该方法
策略模式:
策略模式特点:
通过组合的方式来实现功能扩展的另一种基本模式
是一种对象的行为模式
通过组合来实现扩展
通常,策略模式和模板方法结合使用
什么时候使用策略模式:
程序、系统需要在多种算法中选择一种
重构系统时,将条件语句转换成对于策略的多态性调用
策略模式优/缺点:
优点:
将使用策略的人与策略的具体实现分离
策略对象可以自由组合
缺点:
策略模式只封装了算法的具体实现,方便添加和替换,但并不关心何时使用何种算法,这个需要由客户端自己实现选择
组合模式:
是一种对象的结构模式,适用于树状结构实现的一种模式,有遍历等需要循环的算法
装饰器模式:
装饰器模式特点:
是一种对象的结构模式。
在实现具体的方法之前,可以先包装起来,然后在实现执行,用于不想改变接口但是又有单独需求需要实现时
不改变客户端接口
扩展现有对象的功能
装饰器也被笼统的叫做包装器(wrapper)
装饰器也叫做包装器:
与适配器模式的区别,适配器也被叫做包装器,适配器会改变接口,但是装饰器不改变原有接口,而是通过另一个接口去装饰了接口。
包装器,可以多次装饰,多个方向装饰。
装饰器优缺点:
装饰器和模板方法、策略模式比较
装饰器和继承的比较
依赖注入模式:
对象创建关系依赖关系,A创建B,实现B依赖A,A控制B,变成,A注入B,实现B对A的依赖
案例:
Junit中的设计模式:
Junit时java中的单元测试,是一个典型的模板方法模式,通过基类控制运作流程,只让用户写具体实现,达到控制测试流程的目的
Junit的实现步骤:
junit通过基层类的方法,保证了test的运行顺序:
Spring中的设计模式:
Spring使用了MVC,为了解决早期spring框架中庞杂的servlet管理问题,提出了处理业务的模型和最后展现的html视图进行分离,通过控制器进行分发管理的一种模式。是一种依赖注入模式,不通过继承和组合,实现控制类的模式。
思考:策略模式和适配器模式的区别
都是在一个已经存在的类中找到合适的方法调用的结构
策略模式:是在多个已经存在的,封装好的接口中找到适合自己的方法,是一种对象的行为模式
适配器模式:是已经存在的一个类中有方法,但是并不是非常符合需要,又不能多写一个一样名字的方法时,使用适配器,将存在的方法改造为合适的接口提供调用的形式,是一种结构模式
关于设计模式更好的整理与全部设计模式的讲解参考:
https://www.runoob.com/design-pattern/design-pattern-tutorial.html
版权声明: 本文为 InfoQ 作者【Airs】的原创文章。
原文链接:【http://xie.infoq.cn/article/7b4a6338266e4daef8f3791c6】。未经作者许可,禁止转载。
评论