[디자인패턴] Factory Pattern

JJeong·2021년 7월 21일
0

객체 생성 하는 코드를 분리하여 클라이언트 코드와 결합도(의존성)를 낮추어 코드를 건드리는 횟수를 최소화 하기 위한 패턴이다.

클라이언트 코드란 무엇인가?... 만들어진 객체를 받아서 사용하는 코드인 걸까?

여기서 클라이언트 코드는 분리시킨 객체 생성 코드를 호출하는 쪽을 말한다.

바로 설명해주심....😂

그것은 객체지향 성질중에 하나인 다형성을 이용 하였기 때문이다. 인터페이스를 구현한 객체들은 같은 인터페이스를 바라보기 때문에 코드에 유연함이 있기 때문이다.

유연성 = 비슷하지만 새로운 객체를 추가할 수 있다.

객체를 생성하는 코드를 추상화하여 코드를 한곳에서 관리하지 않으면, 변화(생성,수정,삭제)가 발생 했을 때 해당 클라이언트 코드를 전부 수정해줘야 한다.
즉, 객체지향 디자인패턴 원칙, 확장에 대해서는 열려 있고 변화에 대해서는 닫혀있어야 한다.
때문에 변화가 일어날 수 있는 객체 생성 담당 클래스를 만들어 한곳에서 관리하여 결합도를 줄이기 위해 사용하는 패턴이다.

어떤 결합도를 말하는 걸까? 클라이언트와 클래스 간에 결합도? 클래스 간의 결합도? 맥락 상으로는 전자를 의미하는 것 같고 클라이언트 코드의 특수성에 민감하게 반응하는 코드가 나온다는 거니까 코드 중복이 있어도 묶기 어려워질 것 같다.

그럼 추상 팩토리 패턴은 뭐야?

아이언맨을 만드는 공통 설계서(추상 팩토리)를 만들고 그 기반으로 각각에 유형에 맞는 아이언맨인 헐크버스터, 나도아이언맨 등 (구상 팩토리) 설계도를 방식을 생각한 것이다.

팩토리 패턴에서 다시 한 번 자주 변하는 부분과 변하지 않는 부분을 분리한 패턴.

이렇게 사용하는 이유는
객체를 생성하는 코드를 많이 사용하는데 공통적인 부분은 있지만 또 성격에 따라 다른 유형에 객체를 생성하기 원할 때 사용하는 패턴이다.


추가 학습

0개의 댓글