Java 将部分实现添加到抽象方法
如果实现了抽象方法,但仍然需要从子类实现,那么实现设计的最佳方法是什么。这听起来很生疏,所以我将举例说明:Java 将部分实现添加到抽象方法,java,oop,design-patterns,methods,abstract-class,Java,Oop,Design Patterns,Methods,Abstract Class,如果实现了抽象方法,但仍然需要从子类实现,那么实现设计的最佳方法是什么。这听起来很生疏,所以我将举例说明: abstract class Foo { abstract void update(); } abstract class Bar { void update() { //Do something update_(); //Do something else } abstract void update_(
abstract class Foo {
abstract void update();
}
abstract class Bar {
void update() {
//Do something
update_();
//Do something else
}
abstract void update_();
}
所以基本上,我想要一种在不停止传播的情况下向抽象方法添加一些实现的方法。我觉得简单地重命名该方法将创建不干净的代码
解决这个问题的最佳方法是什么?它只是重命名方法吗?还是最好完全避免这种模式?我认为您要做的是创建。只需创建一个抽象类并实现一个主方法,该方法使用许多尚未实现(比如说抽象)的方法 Foo有许多子类不是Bar的子类,但是也有很多Bar的子类。如果我完全在Bar的子类中实现它,它将创建大量冗余代码。我在问是否有解决方案来解决这个问题。这基本上是模板方法模式,这很好。您应该为update_u方法找到一个更好的名称:一个说明该方法应该做什么的名称,并且符合标准命名约定。如果您不希望子类能够(或意外地)重写update()方法,那么它应该是final方法。您可以反过来做吗?让
useUpdate()
调用abstract update()
?@c0der请澄清。在当前示例中,非抽象方法已经调用了抽象方法。这取决于实际的函数用例。命名很难,但当您甚至不知道类的用途(Foo?Bar?),update()方法的作用,以及doSomething()和doSomethingElse()的实际作用时,命名就更难了。假设酒吧实际上是车库,update()实际上是paintCar(),doSomething()可以选择paintingcolor(),update()可以是applyPainting(),doSomethingElse()可以是dry()。