본문 바로가기
카테고리 없음

디자인 패턴 정리 2

by ByteBridge 2013. 3. 15.
반응형

디자인 패턴을 꼭 사용할 필요가 있는가? 

- 패턴에 얽매이다보면 내가생각하는 SW 설계를 제대로 만들어 낼수없을것이다.

- 디자인 패턴을 꼭 사용해야 된다는, 패턴의 방식대로 꼭 사용할 필요는 없다는 것이다.

- 패턴을 두개 이상 결합하여 사용할수도 있다.

- 패턴을 응용만 하는것이지 , 디자인패턴은 활용하는것, 문법으로 보는것이 아니라 하나의 알고리즘으로                   봐야한다.

참조용이지 문제의 해결을 위한 솔루션이 아니다. 즉 활용을 하는것이 맞다고 볼수있음 

- 특징, 장점, 단점 각 패턴에 대한 심플한 패턴을 직접 작성할줄 아는데까지만 알고잇는것으로도 충분하다고 생각한다.


디자인 패턴?

- sw 설계에 있어 공통된 문제들에 대한 표준적인 해법

- 프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법(문제해결->유지보수,디버깅,비용,인원)

- 특정한 상황에서 구조적인 문제를 해결하는 방안(피자가계설명: )


+ 디자인패턴을 어디서 나왔는가?

건축설계에서 공통적인 설계 와 문제점들을 해결하기위한 공통점에서부터 출발함 

시나리오 들을 적용시켜서 프로그램에 적용시킨것이 디자인 패턴이다.


* 디자인패턴은 알고리즘과 유사함

알고리즘? 특정 문제를 해결하기위한 절차나 방법

유한한 단계에서 문제 해결

간단 명료

프로그램 코드로 바로 변환 가능



+ 디자인 패턴과 알고리즘

공통점

문제에 대한 해결 방법을 제시

재사용이 가능

다양한 문제에 대해서 적용이 가능


차이점

디자인패턴: 코드로 바로 변환 불가능

해결에 대한 전체적인 구조를 나타냄

알고리즘 : 코드로 바로 변환이 가능

해결에 대한 순서도를 나타낸다.


+ 디자인 패턴의 필수 4가지 요소


1. 패턴이름

패턴이 전체적인 특징을 단어로 표현

패턴 사용의 의도를 표현한다.


2. 문제

패턴에 사용시기에 대한 서술

패턴을 사용하게 된 배경

3. 해법

구성되는 요소간의 관계를 서술

구체적인 설명은 안함(템플릿이므로)

클래스나 객체의 나열 방법을 제공


4. 결과

패턴 사용의 장단점을 서술한다.


+ 표기법: 


의도: 어떤 문제 해결을 위해 사용하였는가?


다른 이름 : 이패턴을 다르게 부르는 이름은?-> 존재함  왜? 이패턴이 꼭 이렇다라고 할수없기 때문이다.


동기: 문제 해결해 나가는 과정 -> 시나리오 와 같은것..... 

-> 이패턴을 사용하게 된 동기는 무엇이라는것,,, 


활용성: 패턴의 어떤 상황에서 적용할수있는가?

패턴이 문제 삼는 잘못된 설계에 대해서 

구조 : 객체 모델링 기법을 기반으로 한 표기법

객체간의 관계를 표현한 다이어 그램


참여자 : 패턴을 구성하고 있는 클래스나 객체를 설명


협력방법 : 참여자간의 협력 관계를 정의 ( 의존 참조 상속,)


결과 : 


예제코드

잘알려진 사용예

관련 패턴


--> 디자인 패턴 종류


생성패턴 :

-> 객체를 생성하는 부분에 관련된 패턴

구조패턴 :

-> 클래스나 객체를 복합하고 합성하는 패턴

행동패턴 :

-> 작업의 수행과 객체 집합간의 협력 관계


============================================

: 참고 :

공통된 분모들을 먼저 한후 

공통적으로 접근 다이나믹 캐스팅으로 접근 

================================================


생성패턴의 종류:

추상팩토리

빌더

팩토리 메서드

원형

단일체


구조패턴종류:

적응자

가교

복합체

장식자

퍼사드

플라이급

프록시

행동패턴의 종류:

명령 ( 애니메이션 : 미리 전환될 명령들을 미리 물고있다가 실행할 시점에서 자동으로 실행시켜준다.)

해석자

반복자 

중재자 ( 중재자로써의 역활을 하는것)

메멘토

감시자( 기상청과 같이 감시하고 있다가 변화되어야 할것들을 변화시키는것)

상태

전략(바뀌는것과 바뀌지않는것을 분리한다.)

템플릿 메서드

방문자


반응형