자바 디자인 패턴, 객체 생성 관련 패턴 (Object Creational Patterns) 이란?
객체 생성 관련 패턴이란?
이름처럼 객체의 생성에 관여하는 패턴이다.
객체 생성 과정에서 일반적으로 생길 수 있는 문제를 해결하기 위해 등장했다.
5가지 객체 생성 관련 패턴에 대한 간략한 설명
싱글톤 패턴 (Singleton Pattern): 하나의 객체를 생성하여, 애플리케이션 전역에서 이용할 수 있도록 만들어준다. 생성 비용이 비싸거나 생성이 까다로운 혹은 보안상의 문제로 단 하나만 존재해야 하는 객체를 생성할 때의 문제를 해결한다.
팩터리 메서드 패턴 (Factory Method Pattern): 연관된 여러 오브젝트를 손쉽게 생성할 수 있도록 만들어준다. 공통적인 필드를 여러개 가지고 있는 다양한 종류의 오브젝트를 만들어야 할 때 중복 코드를 줄이고, 확실하게 공통로직을 사용할 수 있게 해준다. 인터페이스를 구현하거나 인터페이스를 구현한 추상 메서드를 상속하여 만들기 때문에 단순 상속보다 확장이 용이하다. ex) Vehicle 이라는 인터페이스가 있고, Car, MotorCycle, Plane, Bicycle 는 바퀴 수, 연료 사용 여부 등의 공통 필드와 움직임, 멈춤 등의 공통 메서드를 가질 것이다.
추상 팩터리 패턴 (Abstract Factory Pattern): 연관된 여러 오브젝트를 하나의 팩터리에서 생성하고 싶을 때 용이하다. ex) MobileUI 라는 인터페이스가 있고, IOSMobileUI 팩터리에서는 IosButton, IosAlert 를 생성할 수 있고, AndroidMobileUI 팩터리에서는 AndroidButton, AndroidAlert 를 생성할 수 있을 것이다.
빌더 패턴 (Builder Pattern): 옵셔널하게 값이 들어가는 필드를 많이 가진 복잡한 객체를 생성할 때 용이하다. 복잡한 객체를 생성할 때 작성하는 코드가 읽기 쉬워지고 유지보수하기 쉬워진다.
프로토타입 패턴 (Prototype Pattern): 기존에 존재하는 오브젝트와 비슷한 오브젝트를 새로 만들고 싶을 때 용이하다. 단순 복사로 이용하기 힘든 비공개 필드가 있거나, 인터페이스만 알거나, 많은 상속을 거친 객체에 대해 적용하면 좋다.