设计模式七大原则

文章目录

  • 闲话少许
  • 单一职责原则
  • 开放-封闭原则
  • 里氏代换原则
  • 依赖倒转原则
  • 迪米特法则
  • 合成/聚合复用原则

闲话少许

学习内容来自(大话设计模式 程杰)
注意:代码规范。
2. 命名一目了然,符合规定。
3. 算法考虑时间效率
4. 要照顾到实际使用过程中的特殊情况。
5. 不同功能的模块要各自封装,例如业务逻辑和界面逻辑要分开。

单一职责原则

就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致错若的设计,当变化发生时,设计会遭受到破坏。

开放-封闭原则

软件实体(类、模块、函数等)应对扩展开放,对修改关闭。
无论模块是多么的“封闭”,都会存在一些无法对之封闭的变化。既然不可能完全封闭,设计人员必须对于他设计的模块应该对哪种变化封闭做出选择。他必须先猜测出最有可能发生变化的类,然后构造出抽象来隔离那些变化。
开放-关闭原则是面向对象设计的核心所在,遵循这个原则可以带来面向对象的很多好处,即可维护、可扩展、可复用、灵活性好。开发人员应该仅对程序中呈现出频繁变化的那些部分做出抽象。

里氏代换原则

子类型必须能够替换掉它们的父类型。
一个软件实体(类、模块、函数等)如果使用的是一个父类的话,那么一定适用于子类,而它察觉不出父类对象和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。
里氏代换原则使得开放-关闭原则成为了可能:由于子类型的可替换性使得使用父类型的模块在无需修改的可能下就可以扩展。

依赖倒转原则

A. 高层模块不应该依赖底层模块。两个都应该依赖抽象。
B. 抽象不应该依赖于细节。细节应该依赖于抽象。
也可以说,针对接口编程,不要针对实现编程。

迪米特法则

如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的有一个方法的话,可以用过第三者转发这个调用。
强调的前提是在类的结构设计上,每一个类都应当尽量降低成员的访问权限。强调的根本时类之间的弱耦合。类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及。

合成/聚合复用原则

尽量使用合成/聚合。尽量不要使用类继承。
聚合表示一种”弱的“拥有关系,A包含B,但B不是A的一部分。eg.大雁和雁群。
合成表示一种”强的“拥有关系,A包含B,且B是A的一部分,部分和整体的生命周期一样。eg.大雁和翅膀。
优先使用对象的合成/聚合有助于保持每个类被封装,并被集中在单个任务上,类和类继承层次保持较小规模,不太可能增长为不可控制的庞然大物。
必要性:
对象的继承关系是编译时就定义好了,所以无法在运行时改变从父类继承的实现。子类的实现与它的父类是依赖关系,以至于父类实现中的任何变化都会导致子类的实现。如果子类复用时继承下来的实现不适合解决问题,父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并最终限制了复用性。

你可能感兴趣的:(设计模式学习,设计模式)