OOP中的继承继承继承所有内容而不重写任何内容

OOP中的继承继承继承所有内容而不重写任何内容,oop,inheritance,language-agnostic,factory-pattern,Oop,Inheritance,Language Agnostic,Factory Pattern,我在用面向对象的语言(C++)工作。我有一个叫做Terrain的基类。在我的世界里,地形的每一个子类——森林、草地、沙漠等等——都继承了地形的每一种方法,什么都不覆盖。子类所做的一切都是基类所做的。在意识到我所能想到的子类所做的一切都可以由基类完成之后,这样做似乎是浪费精力 这是否意味着我应该放弃继承而使用另一种方法?我最初的想法是使用工厂模式来生成地形对象,并使用子类在其构造函数中的赋值来构造它们。例如,工厂将“沙漠”作为输入参数。生成一个具有沙质纹理的地形对象,添加一些仙人掌,设置干燥属性等

我在用面向对象的语言(C++)工作。我有一个叫做Terrain的基类。在我的世界里,地形的每一个子类——森林、草地、沙漠等等——都继承了地形的每一种方法,什么都不覆盖。子类所做的一切都是基类所做的。在意识到我所能想到的子类所做的一切都可以由基类完成之后,这样做似乎是浪费精力


这是否意味着我应该放弃继承而使用另一种方法?我最初的想法是使用工厂模式来生成地形对象,并使用子类在其构造函数中的赋值来构造它们。例如,工厂将“沙漠”作为输入参数。生成一个具有沙质纹理的地形对象,添加一些仙人掌,设置干燥属性等等。但是,这并不是一个完美的解决方案。例如,使用这种方法,您无法根据沙漠、草地或任何此类对象的类型来区分它们。

您完全正确。如果数据结构相同,方法都相同,并且所需的属性值不同,那么工厂模式就是最好的选择。继承只需要大量额外的代码和维护。

工厂模式和继承并不矛盾。您还没有从使用继承模型中获益,但将来当地形类型开始彼此不同时,您可能会受益。