본문 바로가기

리뷰/책을 읽읍시다

[HeadFirstDesignPatterns] 1장. 디자인 패턴 소개

 

※ Head First Design Patterns을 읽고 정리한 글입니다.

 

 


 

1장. 디자인 패턴 소개

SimUDuck - 상속은 모든 해결책이 아니다!

오리에 관련 된 게임을 만들었다고 가정해보자. 소리를 내는 quack(), 수영하는 swim(), 모양 display()가 수퍼클래스에 정의 되어있고 여러개의 서브 클래스에서 상속 받고 있다. 

 

 

 

 

기존 수퍼 클래스에 fly() 함수를 생성한다면?

  • 모든 서브클래스들이 fly() 함수를 상속 받게 된다. 
  • 상속을 하면 안되는것들도 모두 상속되어 치명적인 오류가 발생한다. -> 인형 오리가 날라다님

 

 fly()를 서브클래스에서 오버라이드하면 해결 되지 않나요?

→ 제품이 계속해서 변경 된다면, 매번 서브 클래스의 fly() 함수를 확인해가면서 변경해야 한다.

 

 

변화에 유연 하려면? - 디자인 원칙을 적용해봅시다.

디자인 원칙 1 : 바뀌는 부분과 그렇지 않은 부분 분리하기

코드에 새로운 요구 사항이 있을 때 마다 바뀌는 부분이 있으면, 그 행동을 분리해야 한다.

달라지는 부분을 찾아서 나머지 코드에 영향을 주지 않게 ‘캡슐화’ 하면 코드를 변경하는 과정에서 시스템의 유연성을 향상 시킬 수 있다.

 

  • Duck 클래스에서 변하는 부분은 quack(), fly()의 행위들로 분리한다.

 

 


오버로드(Overload)

: 메서드의 이름은 같고 파라메터의 갯수나 타입이 다른 함수를 정의

 

오버라이드(Override)

: 상위 클래스의 메서드를 재정의

 

추상클래스

: 실체 클래스의 공통적인 부분(변수, 메서드)를 추출해서 선언한 클래스

: 추상 클래스는 실체성이 없고 구체적이지 않기 때문에 객체를 생성할 수 없음

: 실체 클래스와 상속관계

 

캡슐화

: 연관 있는 변수화, 함수들을 하나로 묶고, 실제 구현 내용을 외부에 감추는 것

300x250

'리뷰 > 책을 읽읍시다' 카테고리의 다른 글

[리뷰] 테크 커리어  (2) 2023.08.31