这一章节我们来聊一下在聚合与继承之间选择的问题。
在我们平常的编码里面,使用聚合或者继承都可以,或者两者可以混合使用也行,这个时候就需要做出抉择,因为代码以后还需要维护,怎么才能达到维护简单?代码可读?。。。
因此,我们必须在各种方案中做出抉择。
笔者是这样认为的:
如果新的类只是使用老的类的一部分功能,那么就是用聚合,直接new出来就可以了,满足need或者组合这个关系;
如果新的类必须是老的类的一个特殊例子,那么就是用继承,满足is-a或者is-like-a这种关系
例子:
车是交通工具。
代码:
/**
*
*/
package com.ray.ch05;
/**
* @Package:com.ray.ch05
*
* @TODO 测试
*
* @date 2015 10 30
*
* @time 11:42:19
*
* @author JMSCADMIN
*
* @version 1.0
*/
public class Test {
}
class Vehicle {
}
class Car extends Vehicle {
}
class BMW extends Car {
}
车满足is-a交通工具这个关系,BMW满足is-a车这种关系
车是由轮子、车门等组合成的。
/**
*
*/
package com.ray.ch05;
/**
* @Package:com.ray.ch05
*
* @TODO 测试
*
* @date 2015 10 30
*
* @time 11:42:19
*
* @author JMSCADMIN
*
* @version 1.0
*/
public class Test {
}
class Door {
}
class Wheel {
}
class Car {
private Door leftDoor;
private Door rightDoor;
private Wheel leftForwardWheel;
private Wheel leftBackwardWheel;
private Wheel rightForwardWheel;
private Wheel rightBackwardWheel;
}
车和轮子、门等满足车是由xxx组成的这种关系。
总结:这一章节简单讨论了如何在聚合与继承之间选择。
这一章节就到这里,谢谢。
-----------------------------------