2011-08-05 2 views
0

시나리오의 예 : 무지개를 누를 때마다 무지개 색을 한 색상 씩 증가시키는 화면의 5 가지보기.모델 뷰 컨트롤러 (MVC) 디자인 패턴 - 여러 뷰를 여러 모델에 연결하는 방법?

MVC 디자인을 유지하면서 int 또는 something의 배열 인 모델을 권장하며 뷰를 누를 때마다 컨트롤러에 "이봐, 누를 뿐이야, 그냥 fyi"라고 말하고 제어기가 "ok, 나는 배열의 해당 위치를 하나씩 증가시킬 것"이라고 말하게하고, 모델이 "나는 바뀌 었습니다. 누구라도 상관 없습니다"라고 말한 후,보기가 "내가 신경 써서, 지금 색상 ".

^그건 나에게 절대적으로 불합리한 것 같습니다. MVC가 완전히 비뚤어져 있어야하는 방식을 가지고 있어야한다고 생각합니다. 단순히 버튼 자체에 데이터를 저장하는 것이 훨씬 더 의미가있는 것처럼 보입니다. 물론, 버튼의 기능이 변경되거나 재사용 될 수 있으므로 버튼이 델리게이트 (컨트롤러)로 눌려지면 수행 할 작업을 남겨 두십시오.

또한보기에 ID를 저장하는 것이 좋습니다? 대표자는 어느 쪽이 압박 당했는지를 어떻게 알 수 있습니까? 그런 다음 해당 ID를 모델과 함께 저장해야합니까? 이것은 스파게티 같은 mysql 테이블을 생각 나게하기 시작합니다 ...

어쨌든, 나는 그게 맞는지 확인하고 싶습니다. 나는 절대적으로 완벽하게 때마다 MVC를 사용 의무화 것을이 다른 세상 힘이 없다는 것을 알고,하지만 여전히 제한의 경우이 시나리오 :

답변

2

에 적절한 간주되는 알고 싶습니다

PS- 프로그램 구조에 대한 투자가 과도한 것처럼 보일 수 있습니다. "Hello World"프로그램에 디자인 패턴을 적용할까요? 의견을 추가해야합니까? "모범 사례"가 없으며 단지 "이 상황에서 적절한 관행"이 있습니다.

당신의 셋업은 사소한 모델과 사소한 관계가있는 미니멀리스트 시스템입니다. 따라서 MVC가 과도 할 수 있습니다. 응용 프로그램의 특정 기능 :

  1. 흥미있는 모델이 없습니다. 하나의 값을 증가 시키면 다른 값에 영향을 미치지 않습니다.
  2. 흥미로운 제어 요구 사항은 없습니다. 하나의 버튼을 눌러도 즉시 버튼 이외의 상태가 변경되지 않습니다.
  3. 향후 유지 관리 요구 사항이없는 쓰레기 처리 프로그램처럼 들립니다.

이제 응용 프로그램의 가능한 변경 사항에 대해 생각해 봅시다. 내일 실행하면 상태를 데이터베이스에서 복원합니다. 버튼을 클릭 할 때마다 상태를 저장해야합니다.

미니멀리스트 솔루션에서 어떻게 구현 하시겠습니까? 이제 자신을 지속하는 방법을 알고있는 공통된 모델을 가지고 있으면 가치를 갖기 시작합니다. 나는 MVC 구조가 이것을 스파게티로 바꾸는 것을 정확히 피한다고 주장한다. 이것은 구조를 부과하며, 구조는 관리자가 인식 할 수있는 널리 사용되는 구조입니다.

질문에 너무 많이 읽고있을 수도 있지만 기존 MVC 응용 프로그램을 탐색하기가 번거롭다는 느낌이 들립니다. 작은 프로그램을 작성하는 데 익숙했던 사람이 구조화 된 프로그램이나 OO 프로그램을 사용했을 때와 비슷한 반응입니다. 따라야 할 단일 흐름이 없기 때문에 좌절감을 느낍니다. 전체 구조를 쉽게 볼 수 없습니다. 우리가해야 할 일 중 하나는 블랙 박스 접근법을 코드에 적용 할 수 있어야한다는 것입니다. 이 중 하나에 집중 (예 : 컨트롤러)하고 모델 및 뷰를 Black_Box로 임시 처리하십시오.나는 내가 큰 시스템의 한 측면에서 다른 측면으로 이동함에 따라 나 자신이 거의 "기어 변속"을한다는 것을 알게된다.

+0

질문은 내가 완전히 이해하려고하는 아이디어의 단순화 된 예였습니다. 그래서 나는 문제가있는 곳을 빠르게 묘사 할 수있었습니다. 내가 겪고있는 진짜 문제는 "여러 가지"측면입니다. 최종 결과, 나는 매우 튼튼한 버튼과 같은 것을 원합니다. 내 혼란은 ID 유형을 저장해야하는지 여부에 있습니다. 따라서 화면에 여러 개의 숫자가있을 때 컨트롤러는 어느 것이 눌 렸는지 알 수 있습니다. 그렇다면 동일한 ID가있는 데이터 세트에 ID를 연결하는 것과 연관된 ID가 있습니다. 왜 데이터를 버튼처럼 물건에 저장하는 것이 좋을까요? – Phildo

+0

다시 말해, 각 버튼이 완전히 독립적 인 제한적인 경우 데이터는 간단합니다 (id 1, 데이터 "red", id 2, 데이터 "blue"...). 그러면 간단한 독립형 버튼이 명확하게 작동합니다. MVC에 이점을주기 위해 설정을 많이 변경하지 않습니다. 예를 들어 여러 언어를 지원하려는 경우 빨간색/루즈/단추보다 1 버튼을 사용하는 것이 좋습니다. – djna

관련 문제