태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
2018.11.01 14:30


[실용주의 프로그래머] 단지 뷰일 뿐이야


Divide And Conquer, MVC, Publish, subscribe, [실용주의 프로그래머] 단지 뷰일 뿐이야, 나눠서 정복하기, 하나의 책임


-

우리는 전부터 프로그램을 커다란 덩어리 하나로 짜지 말고, “나눠서 정복하기(divide and conquer)” 방법을 써서 여러 모듈로 나누어 짜야 한다고 배웠다.

모듈마다 자기만의 책임이 있다.

사실, “잘 정의된 단 하나의 책임만 가지는 것”이라는 말이야말로 모듈(또는 클래스)에 대한 좋은 정의가 된다.



-

이벤트를 이용하면 어떤 객체의 상태 변화를 이에 관심을 가질 다른 객체들에게 알릴 수 있다.

이벤트를 이렇게 이용하면 객체들 사이의 결합을 최소화할 수 있다.




출판/구독


-

모든 이벤트를 루틴 하나에 몰아넣는 일은 나쁘다.

하나의 루틴이 여러 객체들 사이의 상호작용에 대한 상세한 지식을 지니게 된다.

그리고 결합도도 증가된다.

그외에도 DRY 원칙 어김, 직교성 어김 등의 여러 단점이 있다.



-

객체가 자기가 필요한 이벤트들만 구독해서 받아보고 필요하지 않은 이벤트들은 받아오지 않도록 해야 한다.



-

P2P(Peer to peer) 기반으로 출판/구독 방식이 있고,

중앙 객체가 수신자들의 DB 를 유지하면서 메시지들을 적절하게 전송해주는 소프트웨어 버스(software bus) 방식도 있다.

중요한 이벤트라면 등록을 했든 안했든 모든 수신자에게 전송하는 방식으로 운영할 수도 있다.




모델-뷰-컨트롤러


-

모델에서 뷰를 분리하라.




자바 트리 뷰




GUI 를 넘어서


-

MVC 는 보통 GUI 개발이라는 맥락에서 가르치지만 사실 일반적으로 쓸 수 있는 프로그래밍 기법이다.

뷰는 모델(또는 모델의 일부)을 해석하는 방식이다. 꼭 그래픽과 관련될 필요가 없다.




(그렇게 세월이 흘러도) 여전히 결합 중


-

청취자(listener)와 이벤트 생성자(구독자와 출판자)는 서로에 대한 약간의 지식이 남아있다.

예를 들어 자바에서는 두 쪽이 공통의 인터페이스 정의와 호출 방식에 대해 동의하고 있어야 한다.




댓글을 달아 주세요


Posted by 돼지왕왕돼지