我正在开发一个包含Car对象的类库. 困境是,汽车本身将是一个类别,如注册号码和汽车的其他一般信息. 但是汽车有发动机,底盘等.这些物体也需要建模.它们应该是嵌入汽车的课程吗?如
困境是,汽车本身将是一个类别,如注册号码和汽车的其他一般信息.
但是汽车有发动机,底盘等.这些物体也需要建模.它们应该是嵌入汽车的课程吗?如果没有,嵌入式类的使用场景是什么?
我已经知道组合是“的一部分”,所以你可以模拟单独的类并使用引擎类型,例如,在汽车的现场级别来实现这一点.然而,“聚合”,其与在ctor中传递的类型“具有”关系,也适用(汽车“具有”引擎).
我该走哪条路?
编辑:我目前正在做作业因此缺乏回复.该类库适用于基于汽车的Web应用程序.我是一名专业的开发人员(我以.NET开发为生,但作为一名大三学生)所以这不是一个功课问题.
谢谢
这真的取决于你的应用程序.例如,您可以将轮子实现为单独的类,包含有关轮胎在哪个轮胎上的信息,磨损程度等等,但如果您的应用程序甚至不关心轮子,则整个课程都是浪费代码.
我可以看到三个组合用例:
>拥有阶级变得过于复杂,应该被打破.
>拥有类具有一组可以映射到类的属性的多个副本.这允许您将所有这些属性绑定在一起.
>可能需要与拥有它的对象分开检查或考虑所包含的对象(例如,您可能希望将Engine对象移动到另一辆车),或者可以将其替换为单个单元.
总结:使用组合作为封装复杂性或消除重复的工具.如果它不能用于其中一个目的,那么可能不值得为它做一个新课程.