Oop 继承实现类以实现方法的可重用性

Oop 继承实现类以实现方法的可重用性,oop,design-patterns,Oop,Design Patterns,有一个实现类--类p,其中包含大约10个具体方法。我的兴趣在于这门课的一种方法。 问题是不鼓励我的班直接调用类p方法。另外,为了让我的类访问类P方法,我需要在所需的类P方法中添加一个条件 我的问题是哪个更微妙- 将类p继承到一个新的impl类中并使用它(鉴于类p中没有方法,我不确定这是否正确,因为我将有不需要的额外方法的开销) 或者通过在类p方法中添加几行来调整我在类p方法中的操作 如果您需要修改该方法,那么它就不能像现在这样严格地重用。继承一个类将按原样提供该方法,然后您仍然需要用新版本覆盖

有一个实现类--类p,其中包含大约10个具体方法。我的兴趣在于这门课的一种方法。 问题是不鼓励我的班直接调用类p方法。另外,为了让我的类访问类P方法,我需要在所需的类P方法中添加一个条件 我的问题是哪个更微妙-

  • 将类p继承到一个新的impl类中并使用它(鉴于类p中没有方法,我不确定这是否正确,因为我将有不需要的额外方法的开销)

  • 或者通过在类p方法中添加几行来调整我在类p方法中的操作


如果您需要修改该方法,那么它就不能像现在这样严格地重用。继承一个类将按原样提供该方法,然后您仍然需要用新版本覆盖它。如果您需要在调用super之前或之后添加要执行的代码,但是您可以通过实例化类P并调用其方法来执行相同的操作

此外,出于此目的进行继承可能会使您的意图变得不清楚,因为下次有人或您查看代码时,他们会问:“为什么b类是p类?”


在这种情况下,不要通过继承来实现可重用性,而是尝试组合原始方法中不会更改的部分,并在两个类中使用这些组件

为什么你不能将这个方法复制到你的新类中并在那里修改它?@steve:为了实现代码的可重用性。。。这个方法有很多行代码!如果它被修改了,那么它就不是同一个代码了……如果你只需要调用该代码,那么以后为什么不创建一个P的实例并调用该方法呢?我想我明白你的意思了——“如果它被修改了,它就不是同一个代码!”,甚至是一行。你能加上这个作为回答吗。我很乐意接受!