PART 2. 상세 설계 원리 (용어, 내용(의도))
실제 코드에 녹일 수 있어야 하겠어요 (보조자료(깃허브) 참고)
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 비교 한번 해보세요
p.13에 해당하는 p.14 예를 하나씩 매칭시켜 보세요
객체가 하나만 만들고 유지
위의 패턴들은 객체를 생성하는 패턴들!
퀴즈
1. 클래스의 객체는 하나만 유지 -> singleton
2. factory method pattern
3. 정답이 없음
p.26 이것도 가능하겠죠
new LaneDecorator(new TrafficDecorator(new RoadDisplay()))
-기본 도로 표시 + 교통량 표시 + 차선 표시
핵심코드
public void draw() {
super.draw(); //앞에 지정된 디스플레이 먼저 그리기
drawLane(); or drawTraffic();
}
⭐️ foreach문에는 iterator pattern이 있다.
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