2017-05-27 66 views
0

实现抽象方法的设计的最佳方式是什么,但是还必须从子类实现。这听起来此刻很生疏,所以我将举例说明:将部分实现添加到抽象方法

abstract class Foo { 
    abstract void update(); 
} 

abstract class Bar { 
    void update() { 
     //Do something 
     update_(); 
     //Do something else 
    } 

    abstract void update_(); 
} 

所以基本上,我想办法一些实施添加到一个抽象方法不停止传播。我觉得简单地重命名该方法会产生不洁的代码。

解决此问题的最佳方法是什么?它只是重命名该方法?或者这种模式最好完全避免?

+0

Foo的许多子类不是Bar的子类,但是,Bar中也有很多子类。如果我完全在Bar的子类中实现它,它会创建大量冗余代码。我在问是否有解决方案来解决这个问题。 –

+0

这基本上是模板方法模式,这很好。您应该为update_方法找到一个更好的名称:一个说明方法应该做什么,并遵守标准命名约定。如果你不想让子类能够(或者意外)重写update()方法,它应该是final的。 –

+0

你可以这样做吗?让'useUpdate()'调用'abstract update()'? – c0der

回答

0

我想你要做的是创建Strategy pattern。简单地说,你需要创建一个抽象类并实现一个使用许多已经没有实现的抽象方法的主要方法。