前记:本周进入设计模式课程。现实中很多复杂的设计可以通过分解来细分成较小的问题,不断细分,细分成很多问题并抽象后,会发现他们的解决思路是一致的。前人总结出了基本问题的经典解决方法,就是设计模式。
复用
设计模式的核心思想就是复用。设计的需求是不断变化的,提高复用的设计方法,考虑各种可能的拓展性,在面对变化时才能应对自如,同时结构思路更清晰。
在程序设计中首先必须弄清楚“变化”和“稳定”。稳定的部分是设计中的核心功能,变化是未来可能改变或拓展的部分。将“稳定”和“变化”隔离开来,这样明确各部分职责,面对未来的变化,提高了软件架构的稳定性。
面对对象设计中的底层实现为封装和接口的思想就是稳定和变化的隔离思想。
八大原则
面对对象设计的八大原则是:
1,依赖倒置原则(DIP)
高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
2,开闭原则(OCP)
对拓展开放,对更改封闭。
在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。
因此,当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。
3,单一职责原则(SRP)
类的职责要单一,不能将太多的职责放在一个类中。(高内聚、低耦合)
功能单一便于使用和维护,并且不会发生太多干扰。
4,Liskor替换原则(LSP)
子类必须能替换他的基类。
5,接口隔离原则(ISP)
客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
6,优先使用对象组合,而不是类继承
继承为白箱复用,某种程度上为打破了封装性,耦合度高。
利用对象组合则拥有良好定义的接口,耦合度低。
7,封装变化点
使用封装来创建对象间的分界层。让设计可以在分界层一侧进行修改,而不影响另一侧。实现层次间的松耦合。
8,针对接口编程,而不是针对实现编程
不将变量类型设置为具体的类,而是声明为接口。这样客户无需知道对象的具体类型,而只需知道对象具有的接口,减少各部分的依赖关系,实现“高内聚,低耦合”的设计思想。
重构
成熟的设计模式不是石头缝里钻出来的,是一步一步改进完善的结果。在研究设计模式时,重构思想是十分重要的,通过不断的研究程序,发现问题点,重构优化问题,在思考过程中会发现各种设计模式的优缺点及其应用位置。
重构技法的思想,有以下一个设计改善原则:
1,静态->动态
2,早绑定->晚绑定
3,继承->组合
4,编译时依赖->运行时依赖
5,紧耦合->松耦合
网友评论