2016-06-27 3 views
1

У меня есть модель данных на основе дерева. Мне нужно, чтобы показать это дерево на зрителе дерева и один из элементов дерева на зрителе элемента как такая схема:OOP GUI классы проектирования с MVC

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); 
    } 
} 

Как следует решить эту задачу правильно с точки зрения объектно-ориентированного программирования и MVC дизайн-шаблон?

ответ

1

MVC и ООП иногда сталкиваются. При этом кажется, что решение может просто перемещать выбор зрителя на узлы дерева:

public class TreeNode { 
    Viewer getViewer(); 
} 
Смежные вопросы