程序设计原则

程序设计有7大原则:

1.开闭原则
2.单一原则
3.代替原则
4.依赖原则
5.接口隔离原则
6.最少原则
7.合成/聚合复用原则编程

原则解释:

开闭原则:

程序的设计应该是不约束扩展,即扩展开放,但又不能修改已有功能,即修改关闭。由于在软件生命周期内,常常会出在原有功能基础上扩展新功能。这时,不能由于软件已经上线,不扩展新功能,但也不能直接修改旧的功能。正确的作法是,在原有功能上,扩展一个新的功能,新的需求依赖新的功能去实现。这样就既保证了老功能不受影响,有扩展了新功能。开闭原则一条很是重要的原则,能够说其它原则的基石。spa

单一原则

就一个类而言,应该仅有一个引发它变化的缘由。具体说,在作编程的时候,很天然的会给一个类加上各类各样的功能。这样意味着,不管任何需求要来,都须要更改这个类,这样实际上是很糟糕的,维护麻烦,复用不可能,也缺少灵活性。若是一个类承担的职责过多,就等于把这些职责耦合起来,一个职责变化可能会削弱或者抑制这个类完成其余职责的能力。这种耦合会致使设计很脆弱,当变化发生时,设计会遭到不少意想不到的破坏。设计

代替原则(里氏代换原则):

派生类(子类)对象可以替换其基类(父类)对象被调用。这条原则主要是说,在程序中,任何调用基类对象实现的功能,均可以调用派生类对象来替换,固然,反过来是不行的。其实这里主要说的是继承问题,既然派生类继承基类,那它的对象也应该相应继承基类对象的实现,固然也就因该能替换基类对象。若是没法替换,就说明这个派生类继承有问题,须要修改设计。对象

依赖倒转原则:

这条原则说的是程序设计应该依赖抽象接口,而不该该依赖具体实现。常常听到的接口编程思想,其实说的主要就是这个原则。道理也很简单,接口是稳定的,实现是不稳定的。这也要求,一旦接口肯定,就不该该再进行修改了。而根据接口的实现,是能够根据具体问题和状况,采用不一样的手段去实现。继承

接口隔离原则:

接口隔离是说,使用多个隔离接口,比使用单个接口要好,仍是一个下降类之间耦合度的意思。常常提到的下降耦合,下降依赖,主要也是经过这个原则来达到的。该原则的优点:1.避免接口污染;2.提升灵活性;3.提供定制服务;4.实现高内聚。接口

1.避免接口污染:一个类若是要实现一个接口,那么就要实现这个接口要求的全部方法,若是这个接口里面包含这个类不须要的方法,那么就会形成接口污染,这是很差的设计,会对系统留下隐患。生命周期

2.提升灵活性:一个类是能够同时实现多个接口的,因此将一个臃肿的接口分割为若干个小接口,经过小接口的不一样组合能够知足更多的需求。ci

3.提供定制服务:咱们在作系统设计时也须要考虑对系统之间或模块之间的接口提供定制服务。提供定制服务就必然有一个需求:只提供访问者须要的方法。这也是能够经过细化接口实现的。同步

4.实现高内聚:下面会讲解 高内聚原则。io

最少原则(迪米特法则)

一个实体应当尽量少的与其余实体之间发生相互做用。这样作的目的在于减小依赖,独立功能,以便更好的复用。

合成/聚合复用原则:

在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分,新的对象经过这些对象的委派达到复用已有功能的目的。设计原则是:尽可能使用合成/聚合,尽可能不要使用继承。

 

知识补充:

类之间的关系:

依赖、组合、聚合、关联
 

依赖(Dependency):

依赖关系是类与类之间的联接。依赖关系表示一个类依赖于另外一个类的定义。例如,一我的(Person)能够buy(car)和buy(House),Person类依赖于Car类和House类的定义,由于Person类引用了Car和House。与关联不一样的是,Person类里并无Car和House类型的属性,Car和House的实例是以参量的方式传入到buy()方法中去的。通常而言,依赖关系在Java语言中体现为局域变量、方法的形参,或者对静态方法的调用。 
能够简单的理解,就是一个类A使用到了另外一个类B,而这种使用关系是具备偶然性的、、临时性的、很是弱的,可是B类的变化会影响到A;好比某人要过河,须要借用一条船,此时人与船之间的关系就是依赖;表如今代码层面,为类B做为参数被类A在某个method方法中使用; 

关联(Association):

关联关系是类与类之间的联接,它使一个类知道另外一个类的属性和方法。关联能够是双向的,也能够是单向的。在Java语言中,关联关系通常使用成员变量来实现。 它体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,好比我和个人朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,通常是长期性的,并且双方的关系通常是平等的、关联能够是单向、双向的;表如今代码层面,为被关联类B以类属性的形式出如今关联类A中,也多是关联类A引用了一个类型为被关联类B的全局变量;

组合 和 聚合 的区别:

一、依赖性区别

聚合中的两种类(或实体)是能够单独存在的,不会相互影响;被关联的一方能够独立于关联一方,依赖性不强。

相反,组合中的两个实体(或者类)是高度依赖于彼此的,它们之间会相互影响。

二、关系类型的区别

聚合表明了has-a关系,一种单向关系,好比:钱包有钱,但钱里面没有钱包;组合表明了part-of关系,好比:人须要心脏,心脏也须要人体。

三、关联强度的不一样

聚合是一种弱关联关系;组合是一种强关联关系。

四、生命周期的不一样

在聚合关系中的两个类(或实体)的生命周期是不一样步;但,在组合关系中的两个类(或实体)的生命周期是同步的。

 

耦合度:组合 > 聚合 > 关联 > 依赖

相关文章
相关标签/搜索