최신판 |
당신의 편집 |
43번째 줄: |
43번째 줄: |
| | | |
| === 중재자패턴 === | | === 중재자패턴 === |
− | [[중재자패턴]](mediator pattern)은 한 집합에 속해있는 객체들의 상호 작용을 캡슐화하는 객체를 정의하는 패턴이다. 중재자는 객체들이 직접 서로 참조하지 않도록 함으로써 객체들 간의 느슨한 연결을 촉진시키며 객체들의 상호작용을 독립적으로 다양화시킬 수 있도록 해준다. | + | [[중재자패턴]](mediator)은 한 집합에 속해있는 객체들의 상호 작용을 캡슐화하는 객체를 정의하는 패턴이다. 중재자는 객체들이 직접 서로 참조하지 않도록 함으로써 객체들 간의 느슨한 연결을 촉진시키며 객체들의 상호작용을 독립적으로 다양화시킬 수 있도록 해준다. |
| | | |
| [[파일:mediator_pattern.png]] | | [[파일:mediator_pattern.png]] |
78번째 줄: |
78번째 줄: |
| 이렇게 다양한 로직들을 적용하기 위해 유닛부분을 손 봐야 한다. 유닛종류에는 전투기, 헬리콥터 두 종류인데 이 상위 추상클래스인 Unit 을 선언한다. Unit에는 display 와 같이 유닛을 그리는 공통적인 메소드가 들어있고, 각각 유닛에 맞는 미사일과 폭탄을 선언하기 위해 인터페이스 형식의 variable 을 선언한다. | | 이렇게 다양한 로직들을 적용하기 위해 유닛부분을 손 봐야 한다. 유닛종류에는 전투기, 헬리콥터 두 종류인데 이 상위 추상클래스인 Unit 을 선언한다. Unit에는 display 와 같이 유닛을 그리는 공통적인 메소드가 들어있고, 각각 유닛에 맞는 미사일과 폭탄을 선언하기 위해 인터페이스 형식의 variable 을 선언한다. |
| | | |
− | 실질적으로 Unit 클래스를 상속받은 전투기(Fighter) 클래스와 헬리콥터(Helicopter) 클래스에서는 생성자에 각각에 맞는 미사일과 폭탄을 정의하면 된다.<ref name='strategy_pattern'>JAMINS,〈[https://flowarc.tistory.com/entry/1-Strategy-Pattern 디자인패턴 - 스트레티지 패턴(Strategy Pattern)]〉, 2015-07-09</ref> | + | 실질적으로 Unit 클래스를 상속받은 전투기(Fighter) 클래스와 헬리콥터(Helicopter) 클래스에서는 생성자에 각각에 맞는 미사일과 폭탄을 정의하면 된다. |
| | | |
− | === 템플릿메소드패턴 === | + | === 템플릿패턴 === |
− | [[템플릿메소드패턴]](template method pattern)은 객체의 연산에서 [[알고리즘]]의 뼈대만 정의하고, 나머지는 서브클래스에서 이루어지게 하는 패턴이다. 템플릿 패턴은 알고리즘의 구조는 변경하지 않고 알고리즘의 각 단계를 서브클래스에서 재정의하게 된다.<br> | + | [[템플릿패턴]](template pattern)은 객체의 연산에서 [[알고리즘]]의 뼈대만 정의하고, 나머지는 서브클래스에서 이루어지게 하는 패턴이다. 템플릿 패턴은 알고리즘의 구조는 변경하지 않고 알고리즘의 각 단계를 서브클래스에서 재정의하게 된다. |
− | [[파일:template_method_pattern.png]]
| |
− | * AbstractClass
| |
− | :ConcreteClass 가 상속받아야 할 추상 클래스이다.
| |
− | :templateMethod() 에 클라이언트가 사용할 로직을 담는다.
| |
− | :각 로직의 요소는 method1(), method2() 에 담기며, 이는 ConcreteClass 에서 구현한다.
| |
− | * ConcreteClass
| |
− | :AbstractClass 를 상속받아 필요한 로직 요소 method() 를 필요에 맞게 구현한다.
| |
− | <ref name='template_pattern'>흠시,〈[https://dailyheumsi.tistory.com/210 행동 패턴, 템플릿메쏘드(Template method)]〉, 2020-03-21</ref>
| |
| | | |
| === 비지터패턴 === | | === 비지터패턴 === |
− | [[비지터패턴]](visitor pattern)은 객체구조를 이루는 원소에 대해 수행할 연산을 표현한다. 방문자는 연산에 적용할 원소의 클래스를 변경하지 않고 새로운 연산을 재정의할 수 있다.<br> | + | [[비지터패턴]](visitor pattern)은 객체구조를 이루는 원소에 대해 수행할 연산을 표현한다. 방문자는 연산에 적용할 원소의 클래스를 변경하지 않고 새로운 연산을 재정의할 수 있다. |
− | [[파일:visitor_pattern.jpg]]
| |
− | * Visitor
| |
− | :방문자 클래스의 인터페이스이다.
| |
− | :visit(Element)을 공용 인터페이스로 쓴다. Element는 방문 공간이다.
| |
− | * Element
| |
− | :방문 공간 클래스의 인터페이스이다.
| |
− | :accept(Vistor)를 공용 인터페이스로 쓴다. Visitor는 방문자다.
| |
− | :내부적으로 Vistor.visit(this)를 호출한다.
| |
− | * ConcreteVisitor
| |
− | :Visitor를 구체적으로 구현한 클래스이다.
| |
− | * ConcreteElement
| |
− | :Element를 구체적으로 구현한 클래스이다.
| |
− | <ref name='visitor_pattern'>흠시,〈[https://dailyheumsi.tistory.com/216 행동 패턴, 방문자(Visitor)]〉, 2020-04-11</ref>
| |
| | | |
| {{각주}} | | {{각주}} |
| | | |
| == 참고자료 == | | == 참고자료 == |
− | * 도킨샤, 〈[https://blog.naver.com/anciid/221763490051 Chapter 1.디자인 패턴 소개 ]〉, 2020-01-07 | + | * |
− | * 귤덕, 〈[https://sexycoder.tistory.com/105 Chain of Responsibility Pattern (책임 사슬 패턴) ]〉, 2018-03-02
| |
− | * 자바캔, 〈[https://javacan.tistory.com/entry/6 커맨드패턴과 그 구현 ]〉
| |
− | * IDEO, 〈[https://m.blog.naver.com/PostView.nhn?blogId=2feelus&logNo=220664898533&proxyReferer=https:%2F%2Fwww.google.com%2F 인터프리터 패턴 - 자바 디자인 패턴과 JDK 예제 ]〉, 2016-03-25
| |
− | * Lkt_Programmer, 〈[https://lktprogrammer.tistory.com/40 08 반복자 패턴(Iterator Pattern) ]〉, 2017-09-24
| |
− | * Crocus, 〈[https://www.crocus.co.kr/1542 08 중재자 패턴(Mediator Pattern) ]〉, 2019-07-07
| |
− | * JAMINS, 〈[https://flowarc.tistory.com/entry/%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-%EC%98%B5%EC%A0%80%EB%B2%84-%ED%8C%A8%ED%84%B4Observer-Pattern 08 디자인 패턴 - 옵저버 패턴 ]〉, 2016-01-25
| |
− | * TevQabs, 〈[https://always-intern.tistory.com/9 08 디자인 패턴 - 상태 패턴(State Pattern) ]〉, 2019-02-15
| |
− | * JAMINS,〈[https://flowarc.tistory.com/entry/1-Strategy-Pattern 디자인패턴 - 스트레티지 패턴(Strategy Pattern)]〉, 2015-07-09
| |
− | * 흠시,〈[https://dailyheumsi.tistory.com/210 행동 패턴, 템플릿메쏘드(Template method)]〉, 2020-03-21
| |
− | * 흠시,〈[https://dailyheumsi.tistory.com/216 행동 패턴, 방문자(Visitor)]〉, 2020-04-11
| |
| | | |
| == 같이 보기 == | | == 같이 보기 == |