写点什么

第二周 - 总结

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

一、 面向对象编程的三要素(特征,但不是面向对象所独有的)

1、封装性:隐藏实现细节(访问控制)、定义接口。

2、继承性:IS-A关系、HAS-A关系(组合)。

3、多态性:后期绑定(虚函数)、向上转型。

三、 面向对象设计的目的和原则

1、面向对象设计的目的:

强内聚、低耦合,从而使系统

扩展性-易于增加新功能

更强壮-不容易被粗心的程序员破坏

可移值-能够在多样的环境下运行

更简单-容易理解,容易维护

2、面向对象设计的原则:

设计原则、设计模式。

四、 开闭原则(OCP):

1、对于扩展是开放的(可以编写新的类来扩展功能)。

2、对于更改时关闭的(一个已完成的类的更改是关闭的)。

3、关键是要抽象(基于接口编程,接口中不应该依赖具体的实现类,而是依赖其他的接口)。

4、具体结合模式:

1.策略模式:

调用接口不依赖实现类,而是依赖策略接口,具体的实现类实现了这个策略接口。

2. 适配器模式:

3. 观察者模式:

不同的事件触发时,应该调用该事件相对应的事件处理器,让这些处理器做一些处理。

五、 依赖倒置原则(DIP):

1、高层模块不能依赖低层模块,而是大家都依赖于抽象。(接口由高层定义,低层实现该接口,接口属于高层)

2、抽象不能依赖实现,而是实现依赖于抽象。

高层需要什么,低层就给什么。而不是给什么就调用什么。不关心具体的实现。重要的是抽象属于谁,应该是属于高层。框架设计常用。

六、 里氏替换原则(LSP):

1、目的:用来解决继承的问题。一个正确的子类继承父类应符合里氏替换原则。

2、传统:传统的判断继承:Is-a,子类is a父类。如苹果 是 一种 水果。

3、定义:在程序运行中,在使用了父类的地方可以直接使用子类来替换,那么这个子类和父类的继承关系就是合理的。

4、自己理解:在具体使用父类的场景中,能使用子类来替换父类,这个场景还是合理的,那么这个继承就是合理的。主要是看在调用父类的地方的代码的使用。

5、jdk中不符合里氏替换原则例子:

Properties继承了HashTable,Properties只能传入String的

Stack继承了Vector

6、不满足里氏替换原则怎么办:

使用组合(目的就是要使用父类中的方法),在软件编程当中,应该优先使用组合而不是继承。

7、违反里氏替换原则的征兆:

1. 子类中的函数退化,父类函数做了实现,但子类却没有做任何实现。

2. 子类抛出了父类中不会产生的异常。

七、 单一职责接口隔离(SRP):

1、定义:

又被称为:内聚性原则。一个类应该只有一个引起他变化的原因(职责)。

2、职责的划分:

3、实在是有很多职责耦合在一起分不开的:

配合使用接口分离原则

4、就是只有一个原因发生了变化(如一个需求更改了),这个类才会修改代码。

八、 接口分离原则(ISP):

1、定义:

不应该强迫客户程序依赖它们不需要的方法。

2、单一职责原则和接口分离原则都是关于类的内聚性的,单一职责原则指出应该如何设计一个类(只有一个原因才能促使类发生变化),接口分离原则指出应该如何设计一个接口(不要让客户看到他们不需要的方法)。

九、 其它:

1、对象或接口的抽象:

分析用例描述,里面的名称都是可能的对象。

2、设计的好坏判断:

要将设计放到实际环境中考虑,如需求一直在变更,能不能支持较好。



用户头像

jizhi7

关注

还未添加个人签名 2018.09.08 加入

还未添加个人简介

评论

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