第三周总结

用户头像
Jam
关注
发布于: 2020 年 09 月 20 日

设计模式分为创建模式,结构模式,行为模式三种。

创建模式:对类的实例化过程进行抽象,解耦

结构模式:将类或者对象组合在一起形成更大的结构

行为模式:对在不同的对象之间划分职责和算法的抽象化,如何对行为进行抽象,解耦



OOD的原则:SRP(单一职责),OCP(开闭),LSP(里氏替换),ISP(接口隔离),DIP(依赖倒置),简称SOLID原则。

OOD的目标:高内聚,低耦合的程序



什么是设计模式?

每一种模式都描述了一种问题的通用解决方案。这种问题,在我们现实世界中,不停地出现。设计模式是一种可重复使用的解决方案。是大家共同的经验。



模式的四部分:

1)模式的名称:包括模式里面包含的角色,也都有名称。(比如:观察者模式,就有观察者和被观察者)

2)待解问题:何时使用该模式,使用该模式的上下文

3)解决方案:描述了组成设计的元素(对象和类),它们的关系,职责以及合作。

4)结论:使用这种模式的利弊,对系统的弹性,可移植性,可伸缩性的影响。



使用单例模式的原因:

1)全局唯一实例,减少对象创建和销毁带来的开销。(性能需求)

2)当多个用户使用这个实例的时候,方便进行统一控制。(功能需求)



适配器模式:程序需要面向接口A编程,但是提供了相关功能的却是类B,类B和接口并不兼容,因此需要针对接口A实现一个适配器类C,由类C统一去调用类B。



工厂模式:



Sorter是一种策略模式,Client依赖工厂来创建对应的Sorter实例,Client不直接依赖具体的排序Sorter。



模板方法模式:

模板方法模式扩展功能的最基本模式之一,它是一种类的行为模式。它通过继承的方式来实现扩展,基类负责算法的轮廓和骨架,子类负责算法的具体实现。(java Servlet中的init,service,destroy方法就属于模板方法)



组合模式:

是一种对象的结构模式。主要是用来处理树形结构(AWT控件,文件系统,语法树,junit中的TestSuite等等)。



装饰器模式:

也被笼统地称为“包装器”(Wrapper),特点:装饰者和被装饰者都实现同一个接口,被装饰者通过构造方法传递到装饰者里面。典型应用场景:junit中的RepeatedTest,jdk中的IOStream,Collections.synchronizedList,java servlet里面的HttpServletRequestWrapper。(适配器是转换成另一个接口,而装饰器则是保持接口不变)

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

1)装饰器保持原有对象的功能不变,扩展其外围功能。

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

装饰器和继承比较:

1)都可以用例扩展对象的功能

2)装饰器是动态的,继承是静态的

3)装饰器可以任何组合,甚至可能组合出荒谬的结果



依赖注入DI和控制反转IoC

通过依赖注入的方式实现控制反转。



用户头像

Jam

关注

还未添加个人签名 2018.03.21 加入

还未添加个人简介

评论

发布
暂无评论
第三周总结