-
[OOP 디자인 패턴 : 첫번째 생성패턴] 팩토리 패턴프로그래밍/기타 2023. 5. 15. 23:44반응형
생성 패턴
객체 간 강력한 결합 관계를 느슨한 결합으로 변경하는 설계 기법
느슨한 결합으로 변경된 객체는 확장을 보다 유연하게 하고 유지보수를 편리하게 한다.
팩토리 패턴
생성 패턴 중에서도 가장 기본이 되는 패턴!
클래스의 객체 생성 처리를 위임한다.
Hello 클래스는 인사말을 출력하는 간단한 코드다.
class Hello { public String greeting() { return "안녕하세요"; } }
"안녕하세요"를 한국어 클래스로 분리한다.
class Korean { public String text() { return "안녕하세요"; } }
class Hello { public String greeting() { Korean kor = new Korean(); return kor.text(); } }
Hello 클래스 내에서 Korean 객체를 생성하여 호출하는 형태로 변경하게 되면, 강력한 결합 관계가 발생!
강력한 결합 관계가 발생하면 클래스 이름 등이 변경될 때 이름을 통해 생성된 코드를 모두 직접 찾아 수정해야 한다.
즉, 객체 간 의존성과 결합관계는 코드 확장을 방해하고 수정과 변경이 어렵다.
이렇듯 코드에서 직접 new 키워드를 사용하면 객체 간에 강력한 의존 관계를 갖는 구조적 문제 발생한다.
팩토리 패턴은 이러한 문제를 객체의 생성을 별개의 클래스로 구축하여 위임 처리함!
팩토리 is 객체 공장
팩토리 패턴에서는 객체 생성 처리를 규격화하여 관리한다.
공장에서 물건을 찍어내듯 객체를 생성한다는 의미에서 팩토리 패턴이라고 한다.
class Factory { static public Korean getInstance() { return new Korean(); } }
class Hello { public String greeting() { Korean kor = Factory::getInstance(); return kor.text(); } }
객체 생성을 Factory가 담당하고 해당 Factory 객체를 통해 호출한다.
장점 : 내부적인 결합 제거, 동적으로 객체 관리
단점 : 불필요한 호출 증가로 인한 프로그램 성능 저하단순 팩토리
팩토리 패턴의 특징과 처리 로직을 간략하게 작성한 것을 의미한다.
class Hello { public String greeting() { Korean kor = self::factory(); return kor.text(); } // 단순 팩토리 public static Korean factory() { return new Korean(); } }
반응형'프로그래밍 > 기타' 카테고리의 다른 글