Java面向对象设计原则7——合成复用原则

在我们学习面向对象编程的时候,总会出现一些问题,好比以前刚刚写好的代码,上线测试可以、正常运行,突然有一天说要加一个功能,改完之后,发现以前正常运行的功能不能用了,类似这样的问题有好多好多,为了避免类似的事件发生,程序员一定要根据这些原则去开发程序。

我们一个一个来学习,今天来学习7大面向对象设计原则之一,合成复用原则。

合成复用原则:

合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚合复用原则(Composition/Aggregate Reuse Principle,CARP)。它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。

如果要使用继承关系,则必须严格遵循里氏替换原则。合成复用原则同里氏替换原则相辅相成的,两者都是开闭原则的具体实现规范。

我们来理解一下这段话,首先,我们得知道里式替换原则,然后我们来看这个定义。

它这个原则是要我们先使用组合或者聚合实现,然后再使用继承。我这里举例说明

我们就用汽车这个来说啊,我们现在汽车有很多种,电动汽车,汽油汽车,还有柴油车(路上跑的那种拉货的好像就是柴油车)

车呢还有颜色区分,黄的白的绿的黑的。然后我们如果直接继承的话就变成这样了

Java面向对象设计原则7——合成复用原则_第1张图片

从上图可以看出用继承关系实现会产生很多子类,而且如果我们再多一种新能源汽车,或者多上几个颜色,我们还得去修改代码,这样做的话,就违背了开闭原则,这显然不可取。我们如果把颜色当做一个属性放入到汽车这个父类中,让其他能源的汽车继承的时候,自己去定义,这样就好多了

合成复用原则的实现:

我其实上面在介绍的时候已经说了实现了。。

我这里画个图,来配合我上面说的

Java面向对象设计原则7——合成复用原则_第2张图片

这样的话,如果多了一种黄色的汽油汽车,我们只需要直接继承汽油汽车,然后修改颜色就行。

我们不需要多弄一个黄色汽油汽车去继承汽车了。

 

这里要好好理解,千万别弄懵了。

讲述到这里,我们的设计原则就讲述完了,虽然就七个原则,但是能真正的做到,或者说真正的按照这些去写代码的人啊,所谓是少的可怜,但是,少归少,我们一定要知道,尽量能保持这样去做,如果有一天你的领导看不懂你代码为啥这么去弄,你就可以给他上一课!

在设计原则这门课程结束的时候,我打个广告,我个人QQ,2100363119  别加错了

Java面向对象设计原则7——合成复用原则_第3张图片

大家可以加一下我的QQ,如果需要微信号的话,大家可以加我QQ之后,我私聊给你我的微信(为了防止有人恶意给我打骚扰电话),到时候我再创建一个群,大家可以再里面探讨技术,问一些问题,闲聊啊。我以后也会给大家多更新一些资源,供大家学习,我们不为了技术而去学技术,只为了能实现需求。

你可能感兴趣的:(Java_7种设计原则)