>일반적인 문제 >팩토리 메소드 패턴은 무엇을 의미하나요?

팩토리 메소드 패턴은 무엇을 의미하나요?

hzc
hzc원래의
2020-06-29 16:05:422837검색

팩토리 메소드 패턴은 일반적으로 사용되는 클래스 생성 디자인 패턴입니다. 이 패턴의 핵심 정신은 클래스의 변화하는 부분을 캡슐화하고, 개인화되고 변경 가능한 부분을 독립적인 클래스로 추출하고, 종속성 주입을 통해 디커플링과 복잡성을 달성하는 것입니다. 그 목적은 향후 유지 관리 및 확장을 용이하게 하는 것입니다.

팩토리 메소드 패턴은 무엇을 의미하나요?

패턴 소개:

팩토리 메소드 패턴의 의미는 제품 객체를 생성하는 팩토리 인터페이스를 정의하고 실제 생성 작업을 하위 클래스로 연기하는 것입니다. 핵심 팩토리 클래스는 더 이상 제품 생성을 담당하지 않습니다. 이러한 방식으로 핵심 클래스는 특정 팩토리 하위 클래스가 구현해야 하는 인터페이스만 담당하는 추상 팩토리 역할이 됩니다. 추가 추상화의 이점은 팩토리 메서드 패턴입니다. 특정 공장 역할을 수정하지 않고도 시스템을 운영할 수 있습니다.

팩토리 메소드 패턴은 간단한 팩토리 패턴의 파생이며 간단한 팩토리 패턴의 많은 문제를 해결합니다. 우선, '개방-폐쇄 원칙'이 완전히 실현되고 확장 가능합니다. 둘째, 제품 결과가 복잡한 상황에는 더 복잡한 계층 구조를 적용할 수 있습니다. [2]

팩토리 메소드 패턴은 간단한 팩토리 패턴을 추상화합니다. 추상 Factory 클래스(추상 클래스 및 인터페이스일 수 있음)가 있습니다. 이 클래스는 더 이상 특정 제품 생산을 담당하지 않고 일부 사양만 공식화하며 특정 생산 작업은 해당 하위 클래스에 의해 완료됩니다. 이 모델에서는 공장 클래스와 제품 클래스가 순서대로 일치하는 경우가 많습니다. 즉, 추상적인 공장은 추상적인 제품에 해당하고, 구체적인 공장은 특정 제품에 해당합니다. 이 특정 공장은 해당 제품을 생산하는 역할을 담당합니다.

Factory Method 패턴은 Template Method 패턴의 가장 일반적인 응용 프로그램입니다.

역할 구조:

Abstract Factory(Creator) 역할: Factory Method 패턴의 핵심이며 애플리케이션과는 아무런 관련이 없습니다. 패턴으로 생성된 객체에 대한 모든 팩토리 클래스는 이 인터페이스를 구현해야 합니다.

Concrete Creator(Concrete Creator) 역할: 추상 팩토리 인터페이스를 구현하는 구체적인 팩토리 클래스로, 애플리케이션과 밀접하게 관련된 로직을 포함하고, 애플리케이션에서 호출하여 제품 객체를 생성합니다. 위 그림에는 BulbCreator와 TubeCreator라는 두 가지 역할이 있습니다.

추상 제품(Product) 역할: 팩토리 메소드 패턴에 의해 생성된 객체의 슈퍼 유형으로, 제품 객체의 공통 상위 클래스 또는 공통 소유 인터페이스입니다. 위 사진에서 이 캐릭터는 라이트입니다.

구체적인 제품 역할: 이 역할은 추상 제품 역할에 의해 정의된 인터페이스를 구현합니다. 특정 제품은 특정 공장에서 생산되며, 이들 사이에는 일대일 대응이 이루어지는 경우가 많습니다.

패턴 적용:

팩토리 메서드는 다음 두 가지 상황에서 자주 사용됩니다.

첫 번째 상황은 특정 제품에 대해 호출자가 특정 팩토리를 인스턴스화하기 위해 어떤 특정 팩토리 서비스를 사용해야 하는지 명확하게 알고 있다는 것입니다. 특정 제품을 생산하는 것입니다. 이는 Java Collection의 iterator() 메소드의 경우입니다.

두 번째 경우에는 제품만 필요할 뿐이며 어느 공장에서 제품을 생산하는지 알고 싶지 않거나 알 필요가 없습니다. 즉, 어떤 특정 공장을 사용할지에 대한 최종 결정은 생산자에게 있습니다. 현재 시스템 상황을 기반으로 인스턴스화되며 특정 팩토리가 사용자에게 반환되며 이 의사 결정 프로세스는 사용자에게 투명합니다.

위 내용은 팩토리 메소드 패턴은 무엇을 의미하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.