C ++我应该创建一个带有许多派生类的抽象类,还是只创建一个通用类?
经典示例是具有派生类Square和Triangle的抽象Shape对象,它包含特定的几何和函数。
为什么我不创建一个名为Shape的通用类,它包含一个更通用的几何数据成员来保存动态数量的点,可以是正方形还是三角形? 函数可以采用一些参数来指示它是什么类型的形状,例如Shape.process( “正方形”);而不是像Square.process();
我的问题清楚了吗?这纯粹是一种风格选择吗?
答案 0 :(得分:1)
你应该避免创建做一堆东西的“上帝”类。如果你需要实现很多形状怎么办?一个类应该只有一个责任,应该是开放的扩展和关闭修改。检查类设计原则或SOLID设计原则。你应该避免复杂的设计和具有多重责任的大班,因为在某个时刻维护它们或添加额外的功能会变得很痛苦。通过良好的设计,单元测试也将更容易实现。
答案 1 :(得分:0)
一般来说,你无法得到这类问题的答案。它将取决于你试图解决的任何问题的情况和要求。在某些情况下,使用派生类的接口是有意义的。在其他人中,拥有一个广义的类是有意义的。如果不了解问题的要求,您将得不到真正的答案。
答案 2 :(得分:-1)
这实际上取决于你需要的Shape
。例如,如果你只是绘制它,那么是一个普通的Shape
类,只是从一个点到另一个点绘制线条是完美的(无论如何对于多边形)。但是,如果你想计算面积怎么办?拥有Square
和Triangle
类可能会更容易,getArea()
函数使用适当的区域公式。没有严格的规则,它只取决于你需要它们