Java 팩토리 패턴에는 단순 팩토리 패턴, 팩토리 메소드 패턴, 추상 팩토리 패턴의 세 가지 유형이 있습니다.
Simple Factory Pattern은 Static FactoryMethod Pattern이라고도 불리는 혁신적인 클래스 패턴으로, 일반적으로 다른 클래스의 인스턴스 생성을 담당하는 클래스를 정의하여 생성됩니다.
간단한 팩토리 패턴은 "전능한 클래스"를 사용하여 외부 세계에서 전달된 정보를 기반으로 어떤 특정 객체 클래스를 생성할지 결정합니다. 아래와 같이
에서는 간단한 팩토리 클래스를 사용하여 이름에 따라 해당 제품 객체를 생성합니다.
간단한 팩토리 패턴은 "개폐 원리"를 심각하게 위반하고 확장이 어려워 팩토리 메소드 패턴이 탄생했습니다.
팩토리 메소드 패턴(FACTORY METHOD)은 단순한 팩토리 패턴을 추상화하고 "개폐 원리"를 준수하며 확장성을 구현합니다.
팩토리 메소드 패턴의 의미는 제품 객체를 생성하는 팩토리 인터페이스를 정의하고 실제 생성 작업을 서브클래스로 미루는 것입니다. 핵심 팩토리 클래스는 더 이상 제품 생성을 담당하지 않습니다. 이러한 방식으로 핵심 클래스는 특정 팩토리 하위 클래스가 구현해야 하는 인터페이스만 담당하는 추상 팩토리 역할이 됩니다. 추가 추상화의 이점은 팩토리 메서드 패턴입니다. 특정 공장 역할을 수정하지 않고도 시스템을 운영할 수 있습니다.
팩토리 메소드 패턴 사용 시나리오:
휴대폰을 조립하는 파운드리 등. 휴대폰 원재료 공장에서 케이스, 디스플레이 화면, 마더보드, 버튼, 배터리 등의 액세서리를 구입하여 조립합니다. 휴대폰 조립 공장은 휴대폰 조립만 담당하고 액세서리 생산은 하지 않는다. 휴대폰 원자재 공장에서 나오는 액세서리가 바뀌었는지 여부는 신경 쓸 필요가 없다. 다양한 부품을 연결하는 인터페이스만 있으면 된다. 휴대폰의 구성은 변경되지 않습니다. 예를 들어, 원자재 공장의 디스플레이 화면이 TFT에서 UFB 디스플레이로 변경되었습니다. 휴대폰을 조립하는 파운드리의 경우 인터페이스가 변경되지 않는 한 계속 조립하면 됩니다.
아래와 같이 먼저 원자재 팩토리 인터페이스를 생성합니다. 원자재 팩토리 인터페이스는 케이스, 디스플레이 화면, 마더보드 및 배터리를 각각 생성하는 방법을 정의합니다.
LB 휴대폰 원자재 공장에서는 배터리, TFT 디스플레이, 마더보드, 가죽 케이스 등 LB 휴대폰에 필요한 액세서리를 제공합니다.
다음은 휴대폰 조립공장의 인터페이스입니다. 조립공장은 원자재 공장에서 액세서리를 구해 새 휴대폰에 조립하는 일만 담당합니다. 그 외엔 책임을 지지 않습니다.
LB 휴대폰 조립공장은 LB 원자재 공장에서 제공하는 액세서리 조립을 담당합니다. 물론, 가끔 다른 휴대폰 제조사의 휴대폰을 조립하는 등 개인적인 일을 하기도 합니다.
LB 휴대폰 판매가 인기가 많으며 전국에 조립공장이 있습니다. 어느 날 갑자기 LB의 휴대폰 화면이 TFT 디스플레이에서 UFT 디스플레이로 바뀌게 되었습니다. 한번의 움직임이 몸 전체에 영향을 미치는데, 이때 팩토리 방식 모델의 장점이 반영됩니다. LB 휴대폰의 구성이 어떻게 변경되더라도 조립공장에서는 createDisplay() 인터페이스가 변경되지 않습니다. 이는 원자재 공장의 디스플레이 화면을 TFT 디스플레이 화면에서 UFT 디스플레이 화면으로 변경하기만 하면 됩니다.
팩토리 패턴의 장점은 인터페이스를 기반으로 만들어진 제품의 기능이 변하지 않는 한, 제품 유형이 어떻게 변하더라도 생성된 제품 인터페이스만 사용자에게 제공하면 된다는 점입니다. 변경하면 사용자가 변경할 필요가 없습니다.
팩토리 메소드 패턴에 대한 많은 소개에서는 언제 사용하는지 구체적으로 소개하지 않고 팩토리 패턴의 사용법만 나열합니다. 처음 읽었을 때 팩토리 메소드 패턴이 중복되고 복잡하다는 느낌이 들었지만 나중에는 점차 팩토리 메소드 패턴의 유용성에 익숙해지고 이를 통합하기 위해 "헤드 퍼스트 디자인 패턴"을 다시 읽었습니다. 이해를 강화하기 위해 장면을 시뮬레이션하고 이론과 연계하여 기록했습니다.
자바 팩토리 패턴과 관련된 더 많은 글은 PHP 중국어 홈페이지를 주목해주세요!