Upload
chi-hwan-choi
View
176
Download
0
Embed Size (px)
Citation preview
참고 도서
Head First Design Patterns자바 객체지향 디자인 패턴 객체 지향과 디자인 패턴
어댑터 패턴● 어댑터 패턴 정의
○ 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환합니다 .
○ 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸수 없는 클래스들을 연결해서 쓸 수 있습니다.
어댑터 패턴● 객체 어댑터 기본 설계
<<Interface>>
Target
request()
Client
Adapter
request()
Adaptee
specificRequest()
어댑터 패턴 예제● 전략 패턴에 사용한 오리 시뮬레이션 기억해보기
Duck
quack()fly()
Mallard Duck
quack()fly()
Redhead Duck
quack()fly()
Rubber Duck
quack()fly()
어댑터 패턴 예제● 객체 어댑터 방법이 아닌 클래스 어댑터 방법으로 구현해보기
<<Interface>>
Duck
quack()fly()
Client Turkey
gobble()shortFly()
ClassTurkeyAdapter
quack()fly()
객체와 클래스 어댑터 차이● 객체 어댑터
○ 모든 서브클래스에 적용된다. - 장점○ 유연성이 높다. - 장점○ 어댑터 하나만으로는 사용할 수 없다. - 단점
● 클래스 어댑터○ 오버라이드를 이용하여 기능을 추가 할 수 있다. - 장점○ 어댑터를 하나로 사용할 수 있다. - 장점○ 특정 클래스에만 적용된다. (새로운 칠면조가 생기면?) - 단점
○ 자바에서 다중 상속이 지원되지 않기 때문에 클래스 어댑터 구현에 제약을 받을 수 있다. - 단점
템플릿 메소드 패턴● 정의
○ 메소드에서 알고리즘의 골격을 정의 합니다.○ 알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있습니다.○ 알고리즘의 구조는 유지하면서 서브클래스에서 특정 단계를 재정의 할 수 있습니다.
템플릿 메소드 패턴● 기본 설계 AbstractClass
templeteMethod()primitiveOpertaion1()primitiveOpertaion2()
ConcreteClass
primitiveOpertaion1()primitiveOpertaion2()
primitiveOpertaion1()primitiveOpertaion2()
차 메이커 예제● 커피 만드는 방법
○ 물을 끓인다.○ 끓는 물에 커피를 우려낸다.○ 커피를 컵에 따른다.○ 설탕과 우유를 추가한다.
● 홍차 만드는 방법○ 물을 끓인다.○ 끓는 물에 차를 우려낸다.○ 차를 컵에 따른다.○ 레몬을 추가한다.
차 메이커 템플릿 메소드 패턴 적용 예제● 템플릿 메소드 패턴 적용 CaffeineBeverage
+ prepareRecipe()- boilWater()- pourlnCup()
Coffee
- brewCoffeeGrinds()- addSugarAndMilk()
Tea
- steepTeaBag()- addLemon()