设计模式六大原则

来源:互联网 发布:ubuntu彻底卸载samba 编辑:程序博客网 时间:2024/04/27 23:54

     设计模式是面向对像技术的最新进展之一。由于面向对象设计的复杂性,所以我们都希望做出应对变化,提高复用的设计方案,而设计模式恰恰是我们所需要的,使用设计模式主要是为了可重用代码,让代码更容易的被他人理解,保证代码的可靠性。

设计模式主要分为原则,和它的分类:

 

        在看完设计模式之后,发现每个模式都有这六个原则的影子。所以在学习设计模式前,就应该要对这六大原则有一个很清晰的人认识,因为所有的模式都是在这些原则的基础上发展起来的。有的可能侧重一个,有的则是多个的体现。比如说中介者模式和外观模式是迪米特法原则的体现,解释器模式是依赖倒转原则的体现。

        

下面我们简单的介绍一下这六个原则:

         一、单一职责原则(SRP):一个类应该仅有一个引起它变化的原因。换句话说,当一个类负责两个或两个以上的职责时,当需求改变时,改变其中一个类的职责会影响其他职责的实现。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到破坏。单一职责原则一个类只负责一项职责大大的降低类的复杂度,提高了代码的可读性,可维护性。


          二、开放封闭原则(OCP):就是对修改关闭,对扩展开放的。开放封闭原则不偏不倚,折中调和,当需求变化的时候,我们不是将程序推到重来,而是在现有的代码上进行扩充。这对于扩展来说是开放的,对修改是关闭的,开放封闭原则是面向对象设计的核心,遵循这个原则有巨大的好处:可维护,可扩展,可复用,灵活性好。


          三,依赖倒转原则(DIP)A:高层模块不应该依赖底层模块,两个都应该依赖抽象。B.抽象不应该依赖细节,细节应该依赖抽象。依赖倒置原则主要是遵循这么一个事实,就是相对于细节的多边性来说,抽象的东西要稳定的多,抽象指的是抽象类或接口,细节是指具体实现的类,依赖倒置原则的核心思想就是面向接口编程。好处:循依赖倒置原则可以降低类之间的耦合性,提高系统的稳定性,降低修改程序造成的风险。


           .里氏代换原则(LSP子类型必须能够替换掉它们的父类型。换句话说任何基类可以出现的地方,子类一定可以出现,反过来则未必。后果:你写的代码出问题的几率将大大增加。

                                                     

           .迪米特法则(LOD):也叫最少知识原则。就是说一个对象应当对其他对象尽可能少的了解,不和陌生人说话。

我们都知道软件编程的总原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。因此在程序设计时,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及。

迪米特法则,通俗的讲就是,一个类对自己依赖的类,知道的越少越好,也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量的将逻辑封装在类的内部,对外除了提供Public方法,不对外泄露任何消息。其根本思想:强调了类之间的松耦合。


           六、合成/聚合复用原则(CARP):尽量使用合成/聚合,尽量不要使用类继承。继承是好的东西,但往往会过度地使用,继承会导致类的结构过于复杂,关系太多,难以维护,而更糟糕的是扩展性非常差啊。在继承体系中,有两个甚至多个方向的变化,那么就解耦这些不同方向的变化,通过对象组合的方式,把两个角色之间的继承关系改为了组合的关系,从而使这两者可以应对各自独立的变化。那么何时才使用继承,何时才使用合成/聚合呢?如果子类和父类中存在着明显的HAS-A关系时就用合成/聚合复用原则,如果存在IS-A关系时,就用继承。 

 

原创粉丝点击