常见面向对象设计原则
引言
设计原则是思想上的指导
设计模式是实现上的手段
设计模式是设计原则的具体体现
在实际开发中,很少做到完全遵守,总是在有意无意的违反一些或者部分原则
设计是一种危险的平衡艺术
单一职责原则(SRP)Single Responsibility Principle
拍摄UFO
单一职责原则
就一个类而言,应该仅有一个引起它变化的原因(职责)。
如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏
难点在于如何区分职责、职责的粒度问题
软件设计真正要做的内容,就是发现职责并把那些职责相互分离。
如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责,就应该考虑类的职责分离。
开放-封闭原则(OCP原则)Open-Closed Principle
开放-封闭原则
Open-Closed Principle原则讲的是:一个软件实体应当对扩展开放,对修改关闭。
需要考虑:
怎样的设计才能面对需求的改变却可以保持相对稳定,从而使得系统可以在第一个版本以后不断推出新的版本。
面对需求,对程序的改动是通过增加新的代码进行的,而不是更改现有代码。
例如第一章程序
关键
合理地抽象、分离出变化与不变化的部分,为变化的部分预留下可扩展的方式。例如:钩子方法或是动态组合对象等
要完全遵守开闭原则是不可能的,也没这个必要。适当的抽象可以提高系统的灵活性、使其可扩展、可维护;过度抽象,会大大增加系统的复杂程度。
例子:
招安
招安之法的关键便是不允许更改现有的秩序,但允许将被招安者纳入现有秩序中,从而扩展了这一秩序。
用面向对象的语言来讲,不允许更改的是系统的抽象层,而允许更改的是系统的实现层。
里氏代换原则Liskov Substitution Principle
使得开放-封闭成为可能
03 设计模式教学课件 来自淘豆网m.daumloan.com转载请标明出处.