六大原则

         学习大话设计模式不仅学了设计模式还学习了六大原则,学会运用这六种原则我们才能走向专业。

         单一职责原则一个类,最好只做一件事,只有一个引起他变化的原因。SRP由引起变化的原因决定,而不由功能职责决定。虽然职责常常是引起变化的轴线,但是有时却未必,应该审时度势。

        问题由来:我们在做编程的时候,很自然地就会给一个类加各种各样的功能,比如我们写一个窗体应用程序,一般都会生成一个From1这样的类,于是我们就把各种各样的代码,像某种商业运算的算法呀,像数据库访问SQL语句呀什么的都写到这样的类当中,这就意味着,无论什么需求要来,你都需要更改这个窗体类,其实这很糟糕,维护很麻烦,复用不可能,也缺乏灵活性。

        好处:单一职责原则是一个既简单又实用的原则。我们遵守了这一原则,可能会多写一些类和代码,但磨刀不误砍柴工。该原则既有利于我们编码思路的清晰,又大大增强了代码的可维护性和扩展性。

       开放封闭原则:软件实体可以扩展,但是不可以修改。

       问题由来:我们在做系统的时候都不要指望系统一开始时需求确定,就再也不会变化,这是不现实也不科学的想法,而既然需求是一定会变化的,那么如何在面对需求的变化时,设计的软件可以相对容易修改,不至于说,新需求一来,就要把整个程序推倒重来,那么就要用到开放封闭原则。

       优点:可维护,可扩展,可复用,灵活性好。

       依赖倒置原则又称依赖倒置原则:抽象不应该依赖细节,细节应该依赖于抽象。说白了,就是针对接口编程,不要针对实现编程。

       依赖倒置原则包含三层含义:

1)高层模块不应该依赖低层模块,两者都应该依赖其抽象;

2)抽象不应该依赖细节;

3)细节应该依赖抽象。

里氏代换原则:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化;简单的说:子类型必须能够替换掉它们的父类型。例如:企鹅在生物学分类上是属于鸟的,但是在编程中,企鹅就不能以父类的(鸟)的身份出现。假设有一个鸟的父类,拥有一个会飞的方法fly(),我们是不能让企鹅继承于鸟的,这样当子类可以替换掉父类,软件单位的功能不受到影响时,父类才能真正的被复用,而子类也能够在父类的基础上添加新的行为。例如:猫是继承动物类的,以动物的身份拥有吃、喝、跑、叫等行为,可当某一天,我们需要狗、牛、羊也拥有类似的行为,由于它们都是继承于动物,所以除了更改实例化的地方,程序其他地方就需要改变了。

合成聚合复用原则:定义:尽量使用合成/聚合,尽量不要使用类继承

优点:优先使用对象的合成/聚合将有助于你保持每个类被封装,并被集中在单个任务上。这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物。

迪米特法则:定义:迪米特原则,又叫最少知识原则。其含义是:一个对象对其他对象有最少的了解,即一个类应该对自己需要耦合或调用的类知道得最少,只需知道它所提供的接口就行。

问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。

开放封闭原则,是最为重要的设计原则,是面向对象设计的核心所在。里氏代换原则和合成/聚合复用原则为开放封闭原则的实现提供保证。其他原则围绕开放封闭原则展开。

你可能感兴趣的:(六大原则)