공장 방법 패턴의 정의
공장 방법 패턴의 의미는 제품 객체를 생성하기위한 공장 인터페이스를 정의하고 실제 생성 작업을 서브 클래스에 연기하는 것입니다. 핵심 공장 클래스는 더 이상 제품 생성에 대한 책임이 없으므로 핵심 클래스가 추상 공장 역할이되며 특정 공장 서브 클래스에서 구현 해야하는 인터페이스에만 책임이 있습니다. 추가 추상화의 장점은 공장 방법 모델을 통해 시스템이 특정 공장 역할을 수정하지 않고 새로운 제품을 도입 할 수 있다는 것입니다.
다음 역할을 포함합니다.
패턴의 UML 클래스 다이어그램
예
세 가지 리필, 즉 적색 리필, 파란색 리필 및 검은 색 리필이 있다고 가정합니다. 사용자는 볼 펜을 사용하여 리필의 색상을 명확히하기를 희망합니다.
패턴 구조의 설명 및 사용
1. 초록 제품 : Pencore.java
공개 초록 클래스 Pencore {문자열 색상; 공개 초록 void writeword (문자열 s);} 2. 특정 제품 (ConcreteProduct) _1 : redpencore.java
공개 클래스 RedPencore는 Pencore {redpencore () {color = "red"; } public void writeWord (String s) {System.out.println ( ""+color+"라는 단어를 쓰기 :"+s); }} 특정 제품 (ConcreteProduct) _2 : Bluepencore.java
공개 클래스 BluepenCore는 Pencore {bluepencore () {color = "blue"; } public void writeWord (String s) {System.out.println ( ""+color+"라는 단어를 쓰기 :"+s); }} 특정 제품 (ConcreteProduct) _3 : BlackPencore.java
Public Class BlackPencore는 Pencore {BlackPencore () {color = "black"; } public void writeWord (String s) {System.out.println ( ""+color+"라는 단어를 쓰기 :"+s); }} 3. 생성자 : Ballpen.java
Public Abstract Class Ballpen {Ballpen () {System.out.println ( ""+getPencore (). Color+"Refill Core"를 사용하여 볼펜을 생산했습니다); } public Abstract Pencore getPencore (); // 공장 방법} 4. CONCRETECREATOR :
redballpen.javapublic class redballpen 확장 볼펜 {public pencore getpencore () {return new redpencore (); }} blueballpen.javapublic class Blueballpen 확장 {public pencore getpencore () {return new bluepencore (); }} blackballpen.javapublic class Blackballpen 확장 볼펜 {public pencore getpencore () {return new BlackPencore (); }} 5. Application.java
공개 클래스 응용 프로그램 {public static void main (String args []) {Pencore Pencore; Ballpen Ballpen = New Blueballpen (); Pencore = Ballpen.getPencore (); pencore.writeword ( "안녕하세요, 당신을 알게되어 기쁩니다"); 볼펜 = 새로운 redballpen (); Pencore = Ballpen.getPencore (); pencore.writeword ( "어떻게 지내세요"); Ballpen = New Blackballpen (); Pencore = Ballpen.getPencore (); pencore.writeword ( "만나서 반가워요"); }} 요약
공장 방법 패턴은 클래스 생성 패턴에 속합니다. Factory Method Mode에서 Factory Parent Class는 제품 객체 생성을위한 공개 인터페이스를 정의하는 책임을지는 반면 Factory 서브 클래스는 특정 제품 객체를 생성 할 책임이 있습니다. 이것의 목적은 제품 클래스의 인스턴스화 작업을 공장 서브 클래스로 지연시키는 것입니다. 즉, 공장 서브 클래스를 통해 인스턴스화 해야하는 특정 제품 클래스를 결정하는 것입니다.
공장 방법 모델은 간단한 공장 모델의 추상화와 홍보입니다. 객체 지향 다형성의 사용으로 인해 공장 방법 패턴은 단순한 공장 패턴의 장점을 유지하고 그 단점을 극복합니다. 공장 방법 모델에서 핵심 공장 클래스는 더 이상 모든 제품의 생성에 대한 책임이 없으며 오히려 특정 제작 작업을 서브 클래스에 제공합니다. 이 핵심 클래스는 특정 공장이 구현 해야하는 인터페이스를 제공하지만 제품 클래스의 인스턴스화에 대한 세부 사항은 아닙니다. 이를 통해 Factory Method 모델은 시스템이 공장 역할을 수정하지 않고 새로운 제품을 소개 할 수 있습니다. Factory Method 모델의 주요 장점은 신제품 클래스를 추가 할 때 기존 시스템을 수정할 필요가 없으며 제품 객체의 생성 세부 사항을 캡슐화 할 필요가 없다는 것입니다. 시스템은 유연성과 확장 성이 우수합니다. 그것의 단점은 새로운 제품을 추가하면서 새로운 공장을 추가해야한다는 것입니다. 시스템 클래스 쌍이 생겨 시스템의 복잡성을 어느 정도 증가시킵니다.