2016-06-27 46 views
1

我有基於樹的數據模型。我需要顯示在樹查看它的樹和元素樹的一個元素上觀衆這樣的方案:用MVC設計的OOP GUI類

tree viewer | element viewer: 
Element A | There should be content from selected element (Element C). 
-Element B | 
-Element C | 
    (Selected)| 

兩個樹查看和元素觀衆可以修改模型。

現在我下面的代碼:

public class TreeNode{...}; 
public class AClass extends TreeNode{...}; 
public class BClass extends TreeNode{...}; 
public class CClass extends TreeNode{...}; 

public class Viewer{ 
    ... 
    //Specifies how to display data from a treeNode 
    public abstract void showModel(); 
    ... 
}; 
public class AViewer extends Viewer{...}; 
public class BViewer extends Viewer{...}; 
public class CViewer extends Viewer{...}; 

public class Controller{ 
    ... 
    public void chooseViewer(TreeNode treeNode){ 
     if (treeNode instanceof AClass) elementViewer = new AViewer(treeNode); 
     else if (treeNode instanceof BClass) elementViewer = new BViewer(treeNode); 
     else if (treeNode instanceof CClass) elementViewer = new CViewer(treeNode); 
    } 
} 

如何正確應該從視OOP和MVC設計模式的角度來解決這個任務?

回答

1

MVC和OOP有時會發生衝突。這就是說,似乎解決方案可能只是將查看器選擇移動到樹節點上:

public class TreeNode { 
    Viewer getViewer(); 
}