【问题标题】:Inheritance in OOP-inheriting everything and overriding nothingOOP中的继承——继承一切,不覆盖任何东西
【发布时间】:2018-04-11 00:20:35
【问题描述】:

我正在使用 OOP 语言 (C++)。我有一个名为 Terrain 的基类。在我的世界里,Terrain 的每一个子类——Forest、Grass、Desert 等等——继承了 Terrain 的所有方法并且没有覆盖任何东西。子类所做的一切,基类都会做。在意识到我可以设想子类所做的一切都可以由基类完成之后,这样做似乎是浪费精力。

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

【问题讨论】:

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

标签: oop inheritance language-agnostic factory-pattern


【解决方案1】:

你完全符合要求。如果数据结构相同,方法都相同,只是所需的属性值不同,那么工厂模式就是要走的路。继承只需要大量额外的代码和维护。

【讨论】:

    猜你喜欢
    • 2012-06-12
    • 2019-06-29
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    相关资源
    最近更新 更多