🧐 🤔 컴퓨터 옆 메모장 🙄 😙

팩토리 패턴 Factory Pattern

2024. 3. 19. Kim Evergood이가 씀

필요성

A a가 있고,
a.do() 하면 a의 실제 자료형에 따라 do()의 구체적 내용이 결정된다.
이것은 객체지향을 공부하면 알게 되는 기본적인 것들 중 하나인 오버라이딩을 통해 직접 구현된다.

거꾸로

외부의 어떤 요인이 있고,
그 요인에 따라 a의 실제 자료형이 달라지는 경우.

앞서 “거꾸로”라는 말을 썼듯; 이것은 고전적인 객체지향과는 정반대 성질의 일이기 때문에;
객체지향 언어의 기초 문법으로 바로 구현되지 않고;
이것을 구현하면서도 내 코드의 객체지향성을 잃어버리지 않으려면 특별한 기법을 써야 한다.

팩토리 패턴은 바로 그 특별한 기법이다.
개체생성을 개체화한다.

팩토리 패턴 종류

단순한 팩토리

우리가 관심갖는 어떤 요소를 개체로서 분리하듯;

개체 생성을 담당하는 개체(팩토리)를 따로 분리한다.
팩토리에서 그 ‘외부요인’에 따라 구체적인 a를 실제로 생성한다.

팩토리 메서드 패턴

인터페이스가 형식을 정의하고, 개체가 인터페이스를 구현 하듯;

팩토리 인터페이스에 반환형 A를 정의한다.
구체적 팩토리 개체에서 a를 실제로 생성하여 반환하도록 인터페이스를 구현한다.

템플릿 메서드 패턴의 생성자 버전이다.

추상 팩토리 패턴

서로 관련있는 여러 속성과 메서드를 한 클래스 안에 묶듯이;

여러 팩토리 메서드를 한 인터페이스 안에 묶는다.
서로 관련있는 여러 개체의 실제 자료형이 한 요인에 의해 한 번에 선택된다.

처음 봤을 땐 이게 모냐 싶었는데 이름 적절히 짓긴 한 듯.

의의

드디어! 클래스간 의존관계를 런타임에 설정한다.

728x90

카테고리 다른 글