我应该使用接口还是抽象层次结构来更新视图?

时间:2016-09-07 08:34:46

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

我有一个updateGUI方法,可以接收两个不同的对象,object1object2,可以用来更新两个不同的视图view1或{{1} }。

view2view1从抽象类view2中分类,工厂类创建适当的视图。每个ViewSuper都有自己的方法viewinitialize的实现。

update

现在我的问题是,我应该在public void updateGUI(Object object){ GUIFactory viewFactory = new GUIFactory(object); ViewSuper view = viewFactory.getView(); view.initialize(); view.update(); } 类中使用initializeupdate两个抽象方法,还是使用这些方法创建一个单独的ViewSuper并使{{1}实现这个接口?

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

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

1 个答案:

答案 0 :(得分:0)

在这种情况下,Abstract类和接口具有相同的用途。

案例1:视图中的任何常用方法

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

案例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{
}