JAVA 객체 지향 디자인 패턴 - 3 - 생성
포스트
취소

JAVA 객체 지향 디자인 패턴 - 3 - 생성

Gang Of Four Design Pattern List

  • Creational Abstract Factory, Builder, Factory Method, Prototype, Singleton 객체 생성에 관련된 패턴으로, 객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공한다.

Singleton 싱글턴 패턴은 인스턴스가 오직 하나만 생성되는 것을 보장하고 어디에서든 이 인스턴스에 접근할 수 있도록 하는 디자인 패턴이다 원래 싱글턴이라는 단어는 ‘단 하나의 원소만을 가진 집합’이라는 수학 이론에서 유래되었다. 굳이 싱글턴 패턴을 사용하지 않고 정적 메서드로만 이루어진 정적 클래스를 사용해도 동일한 효과를 얻을 수 있다.

Factory Method 팩토리 메소드 패턴은 객체의 생성 코드를 별도의 클래스/메소드로 분리함으로써 객체 생성의 변화에 대비하는 데 유용하다. 지금까지 설명한 엘리베이터 스케줄링의 예에서 볼 수 있듯이 프로그램이 제공하는 기능은 상황에 따라 변경될 수 있다. 그리고 특정 기능의 구현은 개별 클래스를 통해 제공되 것이 바람직한 설계다. 그러므로 기능의 변경이나 상황에 따른 기능의 선택은 바로 해당 객체를 새엇앟는 코드의 변경을 초래한다. 게다가 상황에 따라 적절한 객체를 생성하는 코드는 자주 중복될 수 있다. 이런 경우 객체 생성 방식의 변화는 해당 되는 모든 코드 부분을 변경해야 하는 문제를 일으킨다. 바로 이러한 경우에 객체 생성 코드를 별도의 클래스/메소드로 분리해 이용한다면 이 클래스/메소드만 변경함으로써 객체 생성 방식의 변화에 효과적으로 대응할 수 있다.

Abstract Factory 추상 팩토리 패턴은 관련성 있는 여러 종류의 객체를 일관된 방식으로 생성하는 경우에 유리하다. 지금까지 설명한 엘리베이터 예제에서 볼 수 있듯이 엘지 부품을 위한 코드는 엘지의 모터와 문을 이용할 것이다. 만약 현대 부품을 지원하도록 코드를 수정해야 한다면 모터와 문이 일관성 있게 엘지에서 현대로 변경되어야 한다. 바로 이러한 경우에 부품별로 팩토리를 정의하는 대신 관련 객체들을 일관성 있게 생성할 수 있도록 팩토리 클래스를 정의하는 것이 효과적이다. 예를 들어 모터 클래스를 위한 모터팩토리 클래스의 도어 클래스를 위한 도어팩토리 클래스를 정의하는 대신 엘지 부품들을 위한 엘지 팩토리 클래스와 현대 부품들을 위한 현대팩토리 클래스를 정의하는 것이 바람직하다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.