✏️0504/0511 강의필기

정나영·2023년 5월 4일
0
post-custom-banner

PART 2. 상세 설계 원리 (용어, 내용(의도))
실제 코드에 녹일 수 있어야 하겠어요 (보조자료(깃허브) 참고)

6.5 디자인 패턴

Factory Method Pattern

class D {
	void main() {
    	new C(); 
    }
}

위의 예시처럼 지정하는 순간 의존관계가 높아졌다고 할 수 있다.

(this.)CreateDocument();

this가 생략되어있다. this에 따라 Application, MyApplication이 될 수 있다. (호출객체)

PDF Viewer.. : MyApplication 의 예
PDF, Picture, HWP : MyDocument

장점 : 새 객체 추가 용이

1) 선언된 클래스와 2)실제 객체의 클래스가 다를 수 있다
둘의 관계는 상속(부모-자식) 관계

1) Application app {
	.
    .
    new 2) MyAppliciation();
}
...
app.CreateDocument();

p.9 p.10 비교 한번 해보세요

Abstract Method Pattern


p.13에 해당하는 p.14 예를 하나씩 매칭시켜 보세요

Singleton Pattern

객체가 하나만 만들고 유지

위의 패턴들은 객체를 생성하는 패턴들!

퀴즈
1. 클래스의 객체는 하나만 유지 -> singleton
2. factory method pattern
3. 정답이 없음

Decorator Pattern

  • 객체의 (존재하는) 메소드에 동작 추가/오버라이딩
  • 각각의 조합을 클래스로 만들면 개수도 많아지고, 중복이 많이 발생 ex) 10C1 + 10C2 + 10C3 ...
    -> 각각의 경우를 클래스로 만들어 조합!

p.26 이것도 가능하겠죠

new LaneDecorator(new TrafficDecorator(new RoadDisplay()))

-기본 도로 표시 + 교통량 표시 + 차선 표시

핵심코드

public void draw() {
	super.draw(); //앞에 지정된 디스플레이 먼저 그리기
    drawLane(); or drawTraffic(); 
}

Iterator Pattern (반복자 패턴)

  • aggregate : 여러 개의 원소를 모아놓은 것. 마치 배열,,
  • 내부 구조는 모르더라도 원소를 가져올 수 있는 디자인 패턴

⭐️ foreach문에는 iterator pattern이 있다.

Observer Pattern (관찰자 패턴)

  • 홈 아키텍쳐의 사용되는 패턴
  • MVC
  • model이 바뀌면 view에서 업데이트 하기에 최적화

State Pattern

  • 상태가 추가되더라도 코드 변경 x (최소한의 변경)

  • Context 클래스는 Light
  • State 클래스에 On Off
  • State 클래스를 상속받아 On, Off 클래스 생성
  • Sleep 상태 추가 코드 👇
class Sleep implements State {
	public void on_button(Light light) {
    	light.setState(new ON());
    }
    
    public void off_button(Light light) {
    	light.setState(new OFF());
    }
}

ON 클래스는
public class ON implements State {
	public void on_button(Light light) {
    	light.setState(new Sleep());
    }
}
로 바꿔주어야 해

Visitor도 공부해보세요

퀴즈
1. facade pattern
2. iterator pattern
3. observer pattern
4. state pattern

post-custom-banner

0개의 댓글