【问题标题】:Should I use an interface or an abstract hierarchy to update a view?我应该使用接口还是抽象层次结构来更新视图?
【发布时间】:2017-01-14 20:31:38
【问题描述】:

我有一个updateGUI 方法可以接收两个不同的对象,object1object2 可用于更新两个不同的视图view1view2

view1view2 是抽象类ViewSuper 的子类,工厂类创建相应的视图。每个view 都有自己的方法initializeupdate 的实现。

public void updateGUI(Object object){

    GUIFactory viewFactory = new GUIFactory(object);
    ViewSuper view = viewFactory.getView();
    view.initialize();
    view.update();
}

现在我的问题是,我应该在ViewSuper 类中创建initializeupdate 两个抽象方法,还是使用这些方法创建一个单独的interface 并让ViewSuper 实现这个接口?

我很困惑,因为这两种方法似乎都特定于视图层次结构,但同时它定义了一般功能,即接口(根据我的理解)的用途。

如果答案是使用抽象方法,请提供一个示例,我可以将上述功能用作接口。

【问题讨论】:

  • GUIFactory 如何处理普通的Object?传递Objects 是一种代码味道。

标签: java oop design-patterns interface abstract-class


【解决方案1】:

在这种情况下,抽象类和接口服务于相同的目的。

案例1:视图之间的任何通用方法

View1 和 View2 具有 updateinitializedelete 具有通用功能。在这种情况下,我们需要一个实现它的通用方法 -> 抽象类 - 并且可以在两个视图中使用。

案例 2:没有通用功能。

如果视图之间没有任何通用功能(在您的情况下不是,因为定义了一个抽象类)。然后只使用界面。

一般:

使用接口和抽象类的组合。

界面:

public interface IView {

    void initialize();
    void update();
    void delete();
}

抽象类

public abstract class AbstractView implements IView{

    abstract void initialize();
    abstract void update();

    void delete() {
        // do delete operation
    }
}

查看类

public class View1 extends AbstractView implements IView{
}

public class View2 extends AbstractView implements IView{
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 2021-12-17
    • 2023-03-14
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多