随笔记录
随笔记录
单一职责原则
如果一个类承担过多的职责作用时,会增加各个职责的偶合,如果当一个职责改变时会削弱或抑制其它职责作用。
这种偶合会带来脆弱的设计,当变化发生时,会带来意想不到的破坏。
软件设计真正要做的许多内容 就是发现职责,并把它们分离开。
发现职责的窍门:就是如果有多于一个动机去改变这个类,那么这个类就有多于一个的职责。
多少次迎着冷眼与嘲笑,从没有放弃过心中的理想,一刹那恍惚,若有所失的感觉。
开放-封闭原则(the open-closed principle 简称OCP) :是指软件实体(类,模块,函数等)应该可以扩展,但是不可以修改。
对于扩展是开放的,对于修改是封闭的。
--香港回归事件
使设计软件容易维护又不容易出问题的最好办法是多扩展,少修改
无论模块是多么的封闭,都会存在些无法对之封闭的变化,既然不可能完全封闭,
那就必须对于他所设计的模快应该对哪种变化封闭做出选择,他必须先猜出最有可能发生的变化种类,然后构造抽象来隔离那些变化。
等到变化发生时立即采取行动。
面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。
查明可能发生的变化所等待的时间越长,要创建正确的抽象就越困难
开放-封闭原则是面向对象设计的核心所在。遵循这个原则可以带来面想对象技术所声称的巨大好处 就是可维护,可扩展,可复用,灵活性好的。
开发人员应该仅对程序中呈现出频繁变化的那些部分做出抽象,然而 对于应用程序中的每个部分都刻意的进行抽象同样不是个好注意。
依赖倒转:抽象不应该依赖细节,细节应该依赖于抽象。针对接口编程,不要对实现编程。
原则:高层模块不应该依赖低层模块,两个都应该依赖于抽象。
抽象不应该依赖细节,细节应该依赖于抽象
里氏代换原则
子类型必须能够替换掉它们的父类型。
强内聚,松耦合
依赖倒转是面向对象设计的标志,如果编写时考虑的都是如何针对抽象编程而不是针对细节编程,即程序中所有的依赖
关系都是终止于抽象类或者接口,那就是面向对象的设计,反之就是过程化设计。
个人理解:开放-封闭原则是面向对象的核心,对扩展开放,对修改封闭,而依赖倒转就是开放-封闭的基础。
建造者模式要求建造的过程必须是稳定的。
装饰模式Decorator 动态的给一个对象添加一些额外的职责,就增加功能来说装饰模式比生成子类更加灵活。
它把每个要装饰的功能放在单独的类中,并让这个别类包装它所要装饰的对象,因此 当需要执行特殊行为时,客户代码就可以在运行时根据需要有选择的,
按顺序的使用装饰功能包装对象。