추상 팩토리 패턴 예제

By | August 1, 2019

이 시리즈의 마지막 기사에서 팩터리 메서드 패턴을 살펴본 후 오늘은 추상 팩토리, 다른 공장 패턴을 살펴보겠습니다. 추상 팩토리 패턴이 제안하는 첫 번째 방법은 제품 제품군의 각 고유한 제품(예: 의자, 소파 또는 커피 테이블)에 대한 인터페이스를 명시적으로 선언하는 것입니다. 그런 다음 제품의 모든 변형이 이러한 인터페이스를 따르도록 할 수 있습니다. 예를 들어, 모든 의자 변형은 의자 인터페이스를 구현할 수 있습니다. 모든 커피 테이블 변형은 CoffeeTable 인터페이스 등을 구현할 수 있습니다. 다음은 추상 공장 디자인 패턴 구현의 클래스 다이어그램입니다. 반면에 추상공장을 사용하는 경우 새로운 콘크리트 공장을 추가하는 것만하면 됩니다. 및 공장에 대한 구성을 변경합니다. 추상 팩터리는 제품당 팩터리 메서드를 정의합니다. 각 공장 방법은 새로운 작업자와 구체적인 플랫폼별 제품 클래스를 캡슐화합니다. 그런 다음 각 “플랫폼”은 팩터리 파생 클래스로 모델링됩니다.

마찬가지로 동일한 디자인 패턴을 사용하여 Color 인터페이스에 대한 팩터리를 구현할 수 있습니다. 우리의 공장 패턴 게시물처럼, 우리는 동일한 슈퍼 클래스와 하위 클래스를 사용합니다. 자바 예제에서 추상 공장 디자인 패턴에 오신 것을 환영합니다. 추상 공장 디자인 패턴은 창조 패턴 중 하나입니다. 추상 공장 패턴은 공장의 공장과 더 유사하다는 사실을 제외하고는 공장 패턴과 거의 유사합니다. ComputerFactory 클래스에서 getComputer() 메서드는 컴퓨터초이록을 인수로 사용합니다. 이것이 정확하다고 확신하십니까?? 자바의 공장 디자인 패턴에 익숙하다면 단일 Factory 클래스가 있음을 알 수 있습니다. 이 팩터리 클래스는 제공된 입력에 따라 다른 하위 클래스를 반환하며 이를 달성하기 위해 if-else 또는 switch 문을 사용합니다. 팩터리 개체에서 제공하는 서비스는 매우 널리 퍼져 있기 때문에 정기적으로 Singleton으로 구현됩니다.

이렇게 하면 해당 개체가 생성되는 방식(구체화 클래스가 인스턴스화됨)과 는 독립적으로 클래스가 만들어집니다. 클래스는 개체를 만드는 데 사용하는 팩터리 개체로 구성할 수 있으며, 더 나아가 런타임에 팩터리 개체를 교환할 수 있습니다. OS와 독립적인 응용 프로그램 코드를 작성하고 있다고 가정해 보시입니다. 구글 크롬 코드처럼. 이제 Windows OS용 팩토리 클래스가 있어 Windows 버튼, 메뉴 등을 생성할 수 있습니다. 마찬가지로 리눅스 OS의 버튼, 메뉴를 생성하는 또 다른 공장 클래스가있을 것입니다. 이제 이러한 공장 클래스 중 어느 것에 코딩하는 대신 응용 프로그램 코드는 인터페이스에 코딩됩니다 – 단순성을 위한 AbstractFactoryClass 그래서 추상 팩토리 패턴의 이 아이디어로, 우리는 지금 관련의 생성을 용이하게 하는 디자인을 만들기 위하여 시도할 것입니다 개체. 이제 여러 패밀리를 준비했으므로 AbstractFactory 인터페이스를 만들 수 있습니다: 추상 팩터리 패턴은 관련(또는 종속) 개체의 패밀리를 만들기 위한 인터페이스 또는 추상 클래스를 정의하지만 해당 패밀리를 지정하지 않고 정의할 수 있다고 말합니다. 콘크리트 하위 클래스. 즉, 추상 팩터리는 클래스가 클래스의 팩터리를 반환할 수 있음을 의미합니다.

따라서 추상 팩토리 패턴이 팩터리 패턴보다 한 수준 높은 이유입니다. 여기서 우리는 위치를 식별하고 사용자에게 하나의 힌트를 주지 않고 내부적으로 올바른 자동차 공장 구현을 사용하는 추상화의 또 다른 레이어가 필요합니다. 이것은 바로 추상 공장 패턴을 해결하는 데 사용되는 문제입니다. 추상 공장 패턴은 “공장의 공장”이기 때문에 잘, 당신이 말하는 것은 우리가 하나의 공장을 가지고 사용자 입력에 따라 공장 패턴입니다, 다른 개체가 만들어집니다. 위에 제시된 모든 예제의 소스 코드는 GitHub에서 사용할 수 있습니다. 추상 팩터리 패턴의 GOFs 표현을 보자 : 추상 공장 디자인 패턴에 대한 UML 클래스 다이어그램 예제. 안녕하세요 판카이. 질문입니다.

TestDesignPatterns에서 클라이언트가 PCFactory 및 ServerFactory에 대해 직접 알고 있는 것처럼 보입니다.

Category: Uncategorized