首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抽象类实现

抽象类实现
EN

Stack Overflow用户
提问于 2021-04-09 03:27:00
回答 1查看 45关注 0票数 0

我有一个抽象类,如下所示。对于这个抽象类,我有两个具体的类。我的问题是,其中一个具体类需要实现class2不需要的方法。所以我不想在抽象类中调用该方法,因为并不是所有的具体化都依赖于它。但是调用代码将调用抽象类中的execute()方法。它是程序的入口点。我的问题是我该如何重构它?

代码语言:javascript
复制
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{
EN

回答 1

Stack Overflow用户

发布于 2021-04-09 10:48:49

为了避免在抽象中泄漏具体细节,从而使设计不那么落后,您可以做的是使扩展点不那么具体。

例如,如果您将方法命名为postExecute,那么您就允许Class2在该扩展点调用它自己的方法。如果postExecute并不总是需要实现,那么您可以在抽象类中有一个默认的空实现。

在不了解具体模型和问题的情况下,我不能真正提出替代设计,但您也可以尝试使用组合而不是继承和模板方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67010628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档