반응형

디자인 패턴

  • 분류 기준
    • 패턴의 목적, 범위
    • 패턴간의 참조 관계

용어 정리

  • 시그니처(signature)
    • 명세된 연산의 이름, 매개변수로 받아들이는 객체들, 연산의 반환 값을 의미한다.
  • 동적 바인딩
    • 어떤 요청과 그 요청을 처리할 객체를 프로그램 실행 중(런타임)에 연결짓는 것을 의미한다.
  • 화이트박스 재사용(클래스 상속)
    • 서브클래싱에 의한 재사용을 의미한다.
    • 화이트박스 재사용이라 불리는 이유는 상속을 받으면 부모클래스의 내부가 서브클래스에 공개되기 때문이다.
  • 블랙박스 재사용(객체 합성)
    • 클래스 상속에 대한 대안. 다른 객체를 여러 개 붙여서 새로운 기능 혹은 객체를 구성하는 것을 의미한다.
    • 블랙박스 재사용이라 불리는 이유는 객체의 내부는 공개되지 않고 인터페이스를 통해서만 재사용되기 때문이다.
  • 위임
    • 합성을 상속만큼 강력하게 만드는 방법. 런타임에 행동의 복합을 가능하게하고 복합하는 방식도 변경가능하다.
    • 단, 고도로 매개변수화된 소프트웨어는 정적인 소프트웨어 구조보다 이해하기 어렵다. 객체 합성과 동일하게 런타임에 변경된다.
  • 프레임워크
    • 특정한 부류의 소프트웨어에 재사용성을 부여하여 개발할 수 있도록 만들어 주는 관련 클래스들의 집합.
    • 응용프로그램의 뼈대를 제공한다. 클래스와 객체들의 분할, 전체구조, 클래스와 객체들 간의 상호작용, 객체와 클래스 조합방법, 제어흐름에 대해 미리 정의한다.
    • 설계의 가변성을 미리 정의해두고 만들었기 때문에 구현자는 응용프로그램에 종속된 부분에 대해서 설계하면 된다.
    • 코드의 재사용보다는 설계의 재사용 강조.
    • 응용프로그램과 프레임워크 사이의 결합도는 낮을수록 좋다.(프레임워크의 작은 변화가 응용프로그램을 크게 변화시키는 요인이 될 수 있다.)

추상클래스를 상속한다는 것은 단순한 코드의 재사용을 위한 상속이 아니라 추상클래스가 정의하는 인터페이스를 상속하겠다는 의미.

상속의 다양한 기능 중 하나로 동일한 인터페이스를 갖는 객체군을 정의하는 것은 중요한 특징. 이를 통해서 다형성을 이끌어 낼 수 있다.

 

  1. 구현이 아닌 인터페이스에 따라 프로그래밍 하라.
    1. 사용자가 원하는 인터페이스를 그 객체가 만족하는 한, 사용자는 그들이 사용하는 특정객체 타입에 대해 알아야할 필요는 없다.
    1. 사용자는 이 객체들을 구현하는 클래스를 알 필요가 없고, 단지 인터페이스를 정의하는 추상클래스가 무엇인지만 알면 된다.
  1. 객체 합성이 클래스 합성 보다 더 나은 방법이다.
    1. 재사용을 위해 새로운 구성요소를 생성할 필요없이 필요한 기존의 구성요소를 조립해서 새로운 기능을 얻어올 수 있다. 그러나 기존의 구성요소로는 새로운 기능을 구현하기에 충분하지 않을 수 있기 때문에 상속과 객체 합성을 적절히 조합해야 완벽한 재사용이 가능하다.

[참고자료]

리처드 헬름, 랄프 존슨, 존 블리시디스, 『GoF의 디자인 패턴 : 재사용성을 지닌 객체지향 소프트웨어의 핵심요소』, 김정아 번역, 프로텍미디어(2015)

반응형

+ Recent posts