디자인 패턴을 꼭 사용할 필요가 있는가?
- 패턴에 얽매이다보면 내가생각하는 SW 설계를 제대로 만들어 낼수없을것이다.
- 디자인 패턴을 꼭 사용해야 된다는, 패턴의 방식대로 꼭 사용할 필요는 없다는 것이다.
- 패턴을 두개 이상 결합하여 사용할수도 있다.
- 패턴을 응용만 하는것이지 , 디자인패턴은 활용하는것, 문법으로 보는것이 아니라 하나의 알고리즘으로 봐야한다.
참조용이지 문제의 해결을 위한 솔루션이 아니다. 즉 활용을 하는것이 맞다고 볼수있음
- 특징, 장점, 단점 각 패턴에 대한 심플한 패턴을 직접 작성할줄 아는데까지만 알고잇는것으로도 충분하다고 생각한다.
디자인 패턴?
- sw 설계에 있어 공통된 문제들에 대한 표준적인 해법
- 프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법(문제해결->유지보수,디버깅,비용,인원)
- 특정한 상황에서 구조적인 문제를 해결하는 방안(피자가계설명: )
+ 디자인패턴을 어디서 나왔는가?
건축설계에서 공통적인 설계 와 문제점들을 해결하기위한 공통점에서부터 출발함
시나리오 들을 적용시켜서 프로그램에 적용시킨것이 디자인 패턴이다.
* 디자인패턴은 알고리즘과 유사함
알고리즘? 특정 문제를 해결하기위한 절차나 방법
유한한 단계에서 문제 해결
간단 명료
프로그램 코드로 바로 변환 가능
+ 디자인 패턴과 알고리즘
공통점
문제에 대한 해결 방법을 제시
재사용이 가능
다양한 문제에 대해서 적용이 가능
차이점
디자인패턴: 코드로 바로 변환 불가능
해결에 대한 전체적인 구조를 나타냄
알고리즘 : 코드로 바로 변환이 가능
해결에 대한 순서도를 나타낸다.
+ 디자인 패턴의 필수 4가지 요소
1. 패턴이름
패턴이 전체적인 특징을 단어로 표현
패턴 사용의 의도를 표현한다.
2. 문제
패턴에 사용시기에 대한 서술
패턴을 사용하게 된 배경
3. 해법
구성되는 요소간의 관계를 서술
구체적인 설명은 안함(템플릿이므로)
클래스나 객체의 나열 방법을 제공
4. 결과
패턴 사용의 장단점을 서술한다.
+ 표기법:
의도: 어떤 문제 해결을 위해 사용하였는가?
다른 이름 : 이패턴을 다르게 부르는 이름은?-> 존재함 왜? 이패턴이 꼭 이렇다라고 할수없기 때문이다.
동기: 문제 해결해 나가는 과정 -> 시나리오 와 같은것.....
-> 이패턴을 사용하게 된 동기는 무엇이라는것,,,
활용성: 패턴의 어떤 상황에서 적용할수있는가?
패턴이 문제 삼는 잘못된 설계에 대해서
구조 : 객체 모델링 기법을 기반으로 한 표기법
객체간의 관계를 표현한 다이어 그램
참여자 : 패턴을 구성하고 있는 클래스나 객체를 설명
협력방법 : 참여자간의 협력 관계를 정의 ( 의존 참조 상속,)
결과 :
예제코드
잘알려진 사용예
관련 패턴
--> 디자인 패턴 종류
생성패턴 :
-> 객체를 생성하는 부분에 관련된 패턴
구조패턴 :
-> 클래스나 객체를 복합하고 합성하는 패턴
행동패턴 :
-> 작업의 수행과 객체 집합간의 협력 관계
============================================
: 참고 :
공통된 분모들을 먼저 한후
공통적으로 접근 다이나믹 캐스팅으로 접근
================================================
생성패턴의 종류:
추상팩토리
빌더
팩토리 메서드
원형
단일체
구조패턴종류:
적응자
가교
복합체
장식자
퍼사드
플라이급
프록시
행동패턴의 종류:
명령 ( 애니메이션 : 미리 전환될 명령들을 미리 물고있다가 실행할 시점에서 자동으로 실행시켜준다.)
해석자
반복자
중재자 ( 중재자로써의 역활을 하는것)
메멘토
감시자( 기상청과 같이 감시하고 있다가 변화되어야 할것들을 변화시키는것)
상태
전략(바뀌는것과 바뀌지않는것을 분리한다.)
템플릿 메서드
방문자