一、GOF-23 设计模式分类
这一块我没有学完,看也不太懂,网上很多,不做记录,等学习完再来看理解可能更深
二、组件协作模式之模板方法
组件模式通过晚期绑定来实现框架与应用之间的松耦合,让稳定中有变化,是二者之间协作时常用的模式。
Template Method(模板方法)–应用广泛、最简单的一种模式
定义:太繁琐,不记
理解:类似java中的抽象类,规定一个抽象类的模板是什么样子的,只做声明不做实现,但是但凡继承抽象类里面的东西必须实现。也就规定好了我给你的这么一个框架,中间有一些是我实现的,有一部分你自己来实现。
也有点像先在的框架,SPring,Mavern,SpringBoot,这些框架把很多繁琐的细节都封装好了,尤其是SSM到SrpingBoot,有很多细节都已经被隐藏。给人只见树木不见森林的朦胧美(个pi)
总结:
不用模板方法就像咱农村的孩子,家庭给了一部分诸如身体、姓名、基本物资这样的东西,然后其他的比如未来怎么走、学习什么技能,全靠孩子自己实现。
用了模板方法就像城市里的孩子,一切都规划好了,出生到死亡,上辅导班,上重点大学,继承家产…
规范化说法:
程序库开发人员开发出的流程调用应用程序员写的东西–晚绑定,也就是模板方法。(早开发的调用晚开发的)
应用程序员开发出的流程调用程序类库开发人员写的东西–早绑定。
(晚开发的调用早开发的)
缺点、不适用场合
模板的前提是胸有成竹,确保模板的正确性,能洞析全局,能确定的把空什么是稳定的什么是变化的。在不确定的领域使用模板方法显然就是不稳定的。
三、散装知识点
1.好的面向对象设计模式
可复用,应对变化
2.模板方法重要思想
- 看代码的时候要分清楚,哪些是变化的,哪些是不变的。设计模式是根据软件需求不断变更的特点来的:需求一直在变化。而设计模式就是在变化的点进行操作,从而实现可复用、高效率。什么时候、什么地点用设计模式比看懂设计模式看懂代码更重要。
- 倘若一切都是稳定的时候,设计模式也就没有意义了。设计模式就是在变化和稳定之间找一个隔离点,从而实现变化和稳定的隔离。
- “把变化像小兔子一样关在笼子里面,让他在笼子里随便跳”
- 设计类的时候画出类图,分析哪些稳定哪些变化,会更理解面向对象的设计模式。
- 实际上会使用、看的懂虚函数,就已经在运用模板方法了。
- 绝大部分程序里面都使用了模板方法
- 具体实现的时候,模板方法中的虚方法可以实现也可以不实现。一般都设置为protected的,因为这些方法单独存在,public出去是没有意义的,需要在流程中实现才有意义。
3.敏捷软件开发的原则:重构造模式。
4.什么是重构?
他终于来了,我以前不知道重构是什么。重构是之前写了一堆代码,但是效率性能复用性方面不够好,我对代码进行重新构造布局,使用更合适的设计模式或者方法来对代码进行重新设计。这时候其实代码已经完成了的,只是需要对其进行一些加工操作(这是自己的理解,以后发现问题再更正)
5.重构的关键方法
- 静态到动态;
- 早绑定到晚绑定;
- 继承到组合;
- 编译时依赖到运行时依赖;
- 紧耦合到松耦合;
6.才了解到原来开发人员还有类库开发人员和程序库开发人员。一个是造轮子,一个负责使用。当然前者水平更高些。
7.C++中的虚函数是什么?析构函数是什么?
最近在学,学到的时候留意。
指针和虚函数都是属于晚绑定机制
8.规则:写一个基类需要把基类里的析构函数写成虚的。稳定的代码需要写成非虚函数,变化的代码需要写成虚函数
四、下期、下下期预告
下 期:Strategy(策略模式)
下下期:Observer / event(观察者模式)
五、推荐书籍
《重构–改善既有代码的设计》
《重构与模式》