1. 怎样理解设计模式,设计的模式得功能是什么,我们为什么需要设计模式。
2. 首先说下软件设计的一个硬性问题----随着时间推移需求在不断发生变化。
3. 那么设计模式随之而生,设计模式的功能----抵御变化,或者说是封装变化。
4. 那么为什么要封装变化,变化意味着要对已有的模块进行改动来适应,那么改动必将破坏一个 规则----复用。
5. 什么是复用,编译过程中对已有并且已编译的模块不再进行二次编译,即原有的模块被复用, 那么对原有模块进行改动必将引起重新编译,也不符合增量编译逻辑。
6. 那么如何避免重新编译,不要修改原有模块,有新需求的时候增加新模块解决----对修改关闭,对扩展开放(开闭原则)。
7.如何实现新增模块和原有程序之间建立联系----虚函数+继承。
抽象模块AB
模块A
8. 在代码设计之初,本应直接依赖模块A的部分 我们现在依赖A的抽象AB ----依赖抽象 而不依赖具体实现细节
9. 在AB中将方法接口设置成虚函数,随着时间的推移我们需要新增模块B
抽象模块AB
模块A 新增模块B
新增模块继承AB 即可。
10.我们要继承一个虚函数接口必然产生一个局限----我们的子类必须和父类保持相同接口。