- 클래스에 메서드를 추가할 상황일때(유연하지 않게 만든다면)
- 서브클래스에 상속을 이용해 구현(어떤 클래스는 추가된 메서드를 사용 안 할 수 있음
- 인터페이스를 사용해 구현(인터페이스를 구현해서 만든 코드를 재사용할 수 없음)
- 디자인원칙
- 애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분과 분리한다.
- 바뀌는 부분은 따로 뽑아서 캡슐화한다. 그러면 나중에 바뀌지 않는 부분에는 영향을 미치지 않고 그 부분만 고치고나 확장할 수 있다.
- 구현보다는 인터페이스에 맞춰서 프로그래밍한다.
- 서브클래스에서 자체적 구현 X
- 클래스에서 구체적 구현 X
- 인터페이스를 구현한 별도의 클래스를 사용 > 클래스는 인터페이스를 사용하면 구체적으로 구현할 필요가 없어진다.
- 인터페이스에 맞춰서 프로그래밍한다는 말은 상위 형식에 맞춰서 프로그래밍한다는 말이다.
- 애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분과 분리한다.
Dog d = new Dog();
d.bark
//구체적인 구현에 맞춰서 코딩
Animal animal = new Dog();
animal.makeSound();
//다형성을 활용해 Amimal의 레퍼런스 활용
a = getAmimal();
a.makeSound();
//Animal의 하위 형식 가운데 어떤형식인지 모른다. 단지 makeSound의 올바른 반응만 할 수있으면 OK
--행동을 클래스(또는 그 서브클래스)에서 정의한 메소드를 써서 구현하지않고 다른 클래스에 위임한다는게 포인트
- 상속보다는 구성을 활용한다.
- 두 클래스를 합치는 것을 구성을 이용한다라고 부른다.
- 여기에 나와있는 오리클래스는 행동을 상속받는대신 올바른 행동 객체로 구성되어 행동을 부여받는다.
- 전략패턴
- 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해 줍니다. 전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있습니다.
- 패턴으로 소통하면 일상어로 구구절절 말할 때보다 훨씬 효율적으로 의사소통이 가능하다.
- 디자인 도구상자 도구들
- 객체지향 기초
- 추상화
- 캡슐화
- 다형성
- 상속
- 객체지향 원칙
- 바뀌는 부분은 캡슐화한다.
- 상속보다는 구성을 활용한다.
- 구현보다는 인터페이스에 맞춰서 프로그래밍한다.
- 객체지향패턴
- 패턴은 발명되는 것이 아니라 발견되는 것
- 시스템의 빌부분을 나머지 부분과 무관하게 변경하는 방법을 제공
- 많은 경우에 시스템에서 바뀌는 부분을 골라내서 캡슐화해야한다.
- 다른 개발자와의 의사소통을 극대화하는 전문 용어 역할 수행
- 객체지향 기초
'Java > DesignPattern' 카테고리의 다른 글
[HeadFirst] 5장 싱글턴 패턴 (0) | 2022.08.24 |
---|---|
[HeadFirst] 4장 팩토리 패턴 (0) | 2022.08.16 |
[HeadFirst] 3장 데코레이션 패턴 (0) | 2022.08.13 |
[헤드퍼스트] 2장 옵저버 패턴 (0) | 2022.08.07 |