如何解决抽象类实现
我有一个抽象类,如下所示。我有这个抽象类的 2 个具体类。我的问题是,1 个具体类需要实现 class2 不需要的方法。所以我不想在抽象类中调用该方法,因为并非所有的具体化都依赖于它。但是调用代码会调用抽象类中的execute()方法。它是程序的入口点。我的问题是我将如何重构这个
Abstract class A{
abstract void doOne();
abstract void doTwo();
public void execute(){
//.... Lots of common code used by both Class1 and Class2
doOne();
//....
doTwo()
//...
//Method should only be implemented by Class 1 and not by Class 2
CallOnlyClass1()
}
}
Class class1 extends A{
}
Class class2 extends A{
解决方法
为了避免泄漏抽象中的具体细节从而使设计不那么糟糕,您可以做的是使扩展点不那么具体。
例如,如果您将方法命名为 postExecute
,那么您允许 Class2
在该扩展点中调用它自己的方法。如果 postExecute
并不总是需要实现,那么您可以在抽象类中有一个默认的空实现。
在不了解具体模型和问题的情况下,我无法真正提出替代设计,但您也可以尝试使用组合而不是继承和模板方法进行探索。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。