2012-06-22 4 views
0

사용자가 다양한 속성 (위치, 색상 등)을 가진 다양한 객체를 만들 수있는 응용 프로그램을 디자인하려고합니다. 따라서 각 유형의 객체에는 연관된 GUI 패널이 있어야합니다.GUI와 관련된 객체로 응용 프로그램을 설계하는 방법은 무엇입니까?

제 질문은 GUI의 코드는 어디에 있습니까?

편집 : 특정 라이브러리 솔루션을 찾고있는 것이 아닙니다. 이 디자인에 접근하는 방법에 대한 단지 개념적 대답.


내 생각에 응용 프로그램을 확장 가능하게 만들려면 GUI 코드가 주 클래스가 아닌 객체 클래스와 연결되어야합니다. 그런 다음 패널을 반환하는 메서드는 static이어야하며 값을 결정하기 위해 개체의 인스턴스를 가져야합니까? 이렇게했다면 메인 클래스가 어떤 GUI를 표시 할지를 동적으로 어떻게 알 수 있습니까?

MyObject[] objList; // list of entities 
... 
panel = objList[index].getGUI(); // show the GUI associated with the object 
+1

내가 좋아하는 : http://www.codinghorror.com/blog/2008/05/understanding-model-view-controller.html – SomeKittens

답변

0

@SomeKittens은 싶은 것은 GUI 객체에서 분리 된 자신의 클래스가 될 것입니다, 오른쪽 (질문에 아주 좋은 대답을 만들었을 것입니다) 자신의 의견과 함께 머리에 명중 . MVC 컨텍스트에서는 개체가 모델이되고 뷰는 별도의 코드가됩니다. 프로젝트에

, 그것은 같은 것 :

panel = getGUI(objList[index]) 

getGUI()를 독립적으로 는 객체에서 필요한 데이터를 얻을 개체에서보고, 다음을 표시하는 방법을 알아낼 것이다 귀하의 개체. 목표는 가능한 한 UI와 객체 간의 연결을 작게하여 서로 크게 독립적으로 변경할 수 있도록하는 것입니다.

+0

그러나 getGUI()는 어떤 GUI를 얻을지 어떻게 알 수 있습니까? – tskuzzy

+0

귀하의 질문에, 당신은 그것의 객체 데이터와 패널을 구축하는 것 같습니다. 객체는 getData() 메서드를 사용하여 공통 수퍼 클래스를 확장 할 수 있습니다.getData()는 해당 객체에 대한 적절한 데이터를 반환하고 객체는 반환 값을보고 패널을 채우는 방법을 파악할 수 있습니다. –

+0

데이터는 각 객체 유형마다 다릅니다. 하나의 객체와 마찬가지로, 그것은 10 int이고 다른 객체는 3 불린 일 수 있습니다. – tskuzzy

1

당신은 MVC Pattern을 조사해야합니다. 나는 그것이 당신이 찾고있는 것이라고 생각합니다.

2

코드 샘플에서 엔터티에서 GUI를 가져오고 있습니다. 그렇게하지 않으면 엔티티는 렌더링을 누구에게 (잘하면) 알리지 않습니다.

귀하의 질문은 엔티티와 GUI를 연결하는 방법입니다. 당신이 말한 때 당신은 올바른 :

은 GUI 코드는 객체 클래스와 연관 아닌 메인 클래스

관련이 올바른 용어, 지시하지 않습니다해야합니다. 엔티티에서 어떤 GUI를 사용해야 하는지를 나타내는 코드 샘플.

어떻게 연결합니까? 가장 단순한 경우 엔티티 타입을 검사하고 그 엔티티를 렌더링 할 수있는 GUI 클래스의 새 인스턴스 (또는 기존 인스턴스)를 반환하는 Factory 객체입니다. 공장에서 간단한 switch 문. 프레임 워크와 패턴의 산은 그리 간단하지 않은 경우를 해결하기 위해 존재하며 필요에 따라 그 중 하나를 선택합니다. 그러나 당신이이 질문을하는 경우에 간단한 시작하고 거기에서 빌드하십시오.

관련 문제