大多数时候,一件产品简单一些,职责单一一些。或许是更好的选择
单一职责原则:
就一个类而言,应该有且仅有一个引起它变化的原因。
如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭到意想不到的破坏。
如果你能想到多于一个的动机去改变这一个类,那么这个类就有多于一个的职责,就应该考虑类的职责分离。
开放封闭原则:
是说软件实体(类、模块、函数等等)应该可以扩展,但不可以修改。对于扩展是开放的,对于更改是封闭的。关键是抽象,将一个功能的通用部分和实现细节部分清晰的分离开来。
无论模块是多么封闭,都会存在一些无法对之封闭的变化。既然不可能完全封闭,设计人员必须对他设计的模块应该对那种变化封闭进行选择。他必须猜测出最有可能发生的变化种类,然后构造抽象来隔离这些变化。
开放封闭原则是面向对象设计的核心所在,遵循这个原则可以带来面向对象技术所声称的巨大好处。也就是可维护,可扩展,可复用,灵活性好。开发人员应该仅对程序中呈现出频繁变化的那些部分作出抽象。然而,对于应用程序的每一个部分都刻意地进行抽象同样不是一个好主意。拒绝不成熟的抽象和抽象本身一样重要。
依赖倒转原则:
1、高层模块不应该依赖低层模块。两个都应该依赖抽象。
2、抽象不应该依赖细节,细节应该依赖抽象。
依赖倒转原则其实是面向对象设计的标志,用那种语言来编写程序不重要,如果编写时考虑的是如何针对抽象变成而不是针对细节变成,即程序所有的依赖关系都终止于抽象类或接口,那就是面向对象的设计,反之则是面向过程的设计。