zoukankan      html  css  js  c++  java
  • 设计模式的六大原则

    1.单一职责原则

    解释:对于一个类而言,应该有且仅有一个引起它变化的原因。

    为什么要用单一职责:如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化  可能会削弱或者抑制这个类完成其它职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。

     

    2.开放封闭原则

    解释:对于扩展是开放的,对于更改是关闭的。

    为什么要用开放封闭原则:面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护,可扩展,可复用,灵活性好。开发人员应该仅对程序中呈现出频繁变化的那些部分做出抽象,然而,对于应用程序中的每个部分都刻意地进行抽象同样不是一个好主意。拒绝不成熟的抽象和抽象本身一样重要。

     

    3.依赖倒转原则

    ①高层模块不应该依赖低层模块,两个都应该依赖抽象

    ②抽象不应该依赖细节,细节应该依赖抽象。(我们要针对接口编程,而不要针对实现编程。

    不使用依赖倒转原则:

    缺点:高层模块太依赖低层模块,耦合太紧密。低层模块发生变化会影响到高层模块。

    解决方法:利用依赖倒置原则使高层模块和低层模块都依赖于抽象(接口或抽象类)。

    修改后的UML图如下:

    优点:这样的话修改低层模块不会影响到高层模块,减小了它们之间的耦合度,增强系统的稳定性。

    总结:依赖倒置原则其实可以说是面向对象设计的标志,用哪种语言来编写程序不重要,如果编写时考虑的都是如何针对抽象编程而不是针对细节编程,即程序中所有的依赖关系都是终止于抽象类或者接口,那就是面向对象的设计,反之那就是过程化的设计了。

     

    4.里氏转换原则

    解释:子类型必须能够替换掉它们的父类型。

    总结:也正是因为有了里氏替换原则,使得继承复用成为了可能。只有当子类可以替换掉父类,软件单位的功能不受到影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。

    5.接口隔离原则

    解释:尽量把接口按功能切分,尽量避免一个接口定义大量方法

    为什么要接口隔离呢?

    因为如果有些实现类只需要实现部分方法,那么就需要将不需要实现的方法也实现了,这不是合理的设计

     

    6.迪米特原则

    解释:如果两个类不必彼此直接通信,那么这两个类就不应当直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。

    在类的结构设计上,每一个类都应当尽量降低成员的访问权限,也就是说,一个类包装好自己的private状态,不需要让别的类知道的字段或行为(方法)就尽量不要公开。它的根本思想是强调了类之间的松耦合。

     

    怎么理解这几个原则呢?

    http://www.cnblogs.com/lhws/archive/2012/03/10/2389189.html

  • 相关阅读:
    AVR汇编初探之二《AVR的指令与汇编系统》
    Fedora 18 装完后干的事
    重建tempdb
    sqlserver 2008 r2 SqlClrProvider报错解析
    Analysis Memory In Sqlserver
    《设计模式之禅》学习笔记(七)
    容易弄错的繁体字
    《C Primer Plus》学习笔记
    什么是 Windows 能干而 Linux 干不了的事情
    MySQL中BLOB字段类型介绍
  • 原文地址:https://www.cnblogs.com/dcz2015/p/5274746.html
Copyright © 2011-2022 走看看