2016-06-27 10 views
1

私はツリーベースのデータモデルを持っています。私は、このスキームのような要素ビューア上でツリービューアのツリーと要素ツリーの1を表示する必要があります。MVCでデザインするOOP GUIクラス

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

ツリービューアと要素ビューアの両方がモデルに変更を加えることができます。今、私は次のコードしている

OOPとMVCデザイン・パターンの観点から正しくこのタスクを解決する必要がありますどのように
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); 
    } 
} 

答えて

1

MVCとOOPが時々衝突します。つまり、ソリューションは、ビューアの選択をツリーノードに移動するだけのようです:

public class TreeNode { 
    Viewer getViewer(); 
} 
関連する問題