2013-02-19 3 views
1

MVC 패턴과 같이 GUI/데이터/논리 구성 요소를 분리해야한다고 항상 들었습니다. 그래서 궁금합니다. GUI 애플리케이션에서 실제로 데이터를 어디에 저장합니까?GUI 응용 프로그램에서 데이터를 저장하는 위치는 어디입니까?

다음은 예입니다 (C# 용어 사용).
사용자 입력을 받아 분석하고 테이블에 결과를 표시하는 GUI가 있다고 가정 해보십시오.
사용자는 하나의 창에서 여러 가지 분석을 할 수 있으므로 하단에 ListView가있어 사용자가 현재 표시된 분석을 선택할 수 있습니다 (선택한 항목이 표시됨).

이 정보를 표시하려면 분석 데이터를 어딘가에 저장해야합니다.
난 항상 두 가지 중 하나를 수행 한 :


  1. 이 하나의 개체로 모든 데이터를 넣고있는 ListViewItem의 "태그"속성
  2. 에 저장 "있는 ListViewItem을"확장 및 단지 내가 필요로하는 어떤 속성을 추가 할 수 있습니다.

그러나 이것은 ListViewItem 내부에 데이터를 저장한다는 의미입니다. 데이터를 추적하기에 더 적합한 곳이 있습니까?

메인 양식에 비공개 멤버로 추가 할 수는 있지만 같은 일입니다. 제가 생각할 수있는 유일한 다른 방법은 필요할 때마다 참조 할 수있는 글로벌 클래스를 만드는 것입니다.

감사합니다.

+0

임시 저장 영역에 대해서만 이야기하고 있다고 가정합니다. 응용 프로그램이 실행되는 동안 존재하며 지속성은 전혀없는 데이터입니까? –

+0

@ tereško 예, 맞습니다. – user807566

답변

1

제가 알고 있듯이 일부 ListViewItem이 있습니다. 각 ListViewItem은 비즈니스 로직 객체와 연관되어 있으며 ListViewItem 중 하나를 선택하면이 비즈니스 객체에 대해 일부 작업을 수행 할 수 있습니다. 비슷한 상황에서 보통 데이터 객체를

struct MyDataObject 
{ 
    string Id;//very often data object need to have Identifcator, but not always 
    //some fields 
} 

과 같이 만들고 일반적인 사용자 입력을 위해 데이터 객체 생성자에 추가합니다.

그런 다음 비즈니스 로직 계층에이 데이터 객체에 사용할 수있는 알고리즘이 포함되도록합니다. 간단한 프로젝트의 경우, 이것은 일반적으로 interface, 큰 프로젝트의 경우

static class MyDataObjectOperationService{ 
    void MakeSomething(MyDataObject myDataObject); 
    object GetSomething(MyDataObject myDataObject); 
    ... 
} 

같은 정적 클래스입니다. 또한 나는 보통 데이터 객체를 얻기 위해 interface 데이터 레이어를 만든다. 그 후

interface IMyDataObjectRepository{ 
    IList<MyDataObject> GetAll(); 
    MyDataObject GetById(string id); 
    //CRUD operations if it need 
} 

예를

위해 나는 데이터 개체의 ListViewItems 식별자로 및 ListViewItemClick 데이터 레이어 클래스를 사용하여 비즈니스 로직 계층 클래스를 사용하여 일부 작업을 ID로 데이터 객체를 받고 그 후, ID를 선택 점점 입었다. DataObject 변경 내용을 저장하거나 데이터 계층 클래스를 사용하여 새 DataObject I을 만들어야하는 경우

관련 문제