写点什么

第三周 - 总结

用户头像
jizhi7
关注
发布于: 2020 年 11 月 08 日

OOD 面向对象设计

目标:强内聚、低耦合的程序。

原则:OCP 开闭原则、DIP 依赖倒置原则、LSP 里氏替换原则、SRP 单一职责、ISP 接口隔离原则。

指导方法:设计模式。

 

设计模式

是什么:每一种模式都描述了一种问题的通用解决方案。

分类:

从功能分:

创建模式:对象的实例化过程的抽象。

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

行为模式:对在不同的对象之间划分责任和算法的抽象化。

从方式分:

类模式:以继承的方式实现模式,静态的。

对象模式:以组合的方式实现模式,动态的。

 

简单工厂:

对象的创建交由工厂来创建。但是这样一个工厂只能创建单一的一个类的实例。

优化:获取实例的方法,将需要的具体的实现类的类名传递进去,工厂反射生成实例。但是这样如果要替换不同的实现类,还是要修改代码,继续优化,可以将类的全路径名放在配置文件中,直接读取配置文件的数据,如果没有的话就给他一个默认的值。

单例模式:

构造函数一定是私有的,成员变量 instance 也一定是私有的,一定会有一个 public static 的访问实例的方法。

适配器模式:

我们需要使用某个类的一些方法,但是他提供的这个方法不是我们所期待的(没有按照我们定义的接口来写的)。这时,可以使用适配器。定义一个适配器实现类,实现要适配的接口,然后将这个给具体的类当成成员变量传递进来,底层委派他去完成功能。

在面向接口编程的时候,接口已经定义好了,此时发现已经有实现类完成了这个功能,但是他没有实现这个接口,此时就可以用适配器模式了。

模板方法模式:

通过继承来扩展。基类负责算法的轮廓和骨架,抽象的实现方法,子类负责具体的实现。

基类中:

抽象方法:子类一定要实现。

已实现方法:子类可以覆盖也可以不覆盖,如不要需要子类覆盖,请标明 final。

钩子方法:不是抽象的,但是是空实现,子类可以选择覆盖,以便完成某些事。

策略模式:

根据策略接口进行编程。

什么时候可以用策略模式:

要在多种算法中选择一种来使用。

多 If else 判断,将里面的代码封装成不同的策略实现,然后再使用工厂模式返回不同的策略,而 if else 的判断就转移到了工厂模式的配置文件中了,可以将每一种 if 情况和具体的策略实现对应起来。

与模板模式的配合使用:

在基类中定义模板,子类去实现。基类就是策略接口,子类就是具体的策略实现。

组合模式:

面向接口编程,在一个类里面可以组合关联若干个该接口(也就是自己关联自己)。

装饰器模式:

把我们执行的类的方法包装起来,再执行。执行的时候,先执行最外层的。

与适配器的区别:

适配器是转化成另一个接口了,而装饰器保持接口不变。

Spring 中的设计模式:

依赖注入/IOC

Spring 的单例模式

Spring MVC 模式


用户头像

jizhi7

关注

还未添加个人签名 2018.09.08 加入

还未添加个人简介

评论

发布
暂无评论
第三周-总结