Design Architecture/Design Pattern 21

18강 MVC PATTERN

핵심 - 옵저버 패턴 : Model변화를 View에 전달 - Composite 패턴 : 위젯들은 계층적구조. 임의의 Hierachy 다 구현가능 - Strategy 패턴 : View와 Controller사이. 위임(delegate) 어디까지가 Controller이고 어디까지가 View인가? UI Framework마다 다름. View와 Controller는 커플링이 좀 있어도 괜춘 가장 중요한건 UI와 non-UI가 잘 분리되어 있어야 함 테스트 : 다른 UI를 써도 재사용이 가능한가?

17 Bridge

Circle같은게 추가될 수 있으니, Shape를 추가 기존의 디자인을 확장함 클래스 개수가 어마어마하게 늘어나게 된다. 굳이 같이 있어야 하나? 나눠보자! 1이면, Information이 있는 곳에서 해라 규칙 위반 Encapsulation 위반 그릴때 V1Drawing, V2Drawing 갖다쓰겠다는 이야기인덧 어떻게 쓸지는 Ractangle, Circle이 스스로 알고 있음. Class Client { Shape r1, r2; Drawing dp; dp = new V1Drawing(); r1 = new Ractangle(dp, 1, 1, 2, 2); dp = new V2Drawing(); r2 = new Circle(dp, 2,2,3); r1.draw(); r2.draw(); } abstract C..

9강 State Pattern

처음거랑 기능적으로는 같지만 구조가 다름 각각의 State별로 Encapsulation되어 있음 state가 증가할때마다 클래스가 늘어나는 단점이있음 클래스 다이어그램상 차이는 없음 의도의 차이. - State = State에 dependency가 있는 Behavior를 Encapsulation하기 위해서. State Pattern이 없으면 Conditoin Block(if문)이 존나 생김 - Stragegy = 어떤 특정한 객체에 가장 적합한 전략을 연결해주고 Delegation해줌 / 전략변경 빈도는 State에 비해 낮음 Stragegy 없으면 상속을 세분화 해서 해결하려 했을 것. 필요할때 Create해도 되고, 아까 예제처럼 처음에 바로 만들고 레퍼런스를 만들어도 된다. Requirement가 ..

7강 Template Method

오우 굉장히 비슷하네? final = 하위클래스에서 override하지 못하게 함 이 골격은 계속 유지하고 싶다 Template Method Pattern은 Class Scope 패턴이다. (오브젝트까지는 신경안쓰니까) 일단 디폴트가 있고, 원하는 경우 하위에서 override하면 바뀜 각 모듈마다 레벨이 있음 Low Level은 여지를 줄때만 흐름에 개입할 수 있음 (여지= hook) stragegy와 비슷하나 방법이 약간 다름 - stragegy = 알고리즘 전체를 바꿔낀다. - template = 특정한 파트를 변경 Factory Method는 template method의 특화된 형태이다.