디자인 패턴 ~Factory Method~
10958 단어 객체 지향디자인 패턴신인 프로그래머 응원uml자바
1. 소개
GoF의 디자인 패턴에서 Factory Method 패턴을 정리합니다.
2. Factory Method 패턴이란?
3. 샘플 클래스 다이어그램
4. 샘플 프로그램
ID 카드 공장에서 ID 카드를 작성하는 프로그램입니다.
4-1. Factory 클래스
Factory의 기본이 되는 클래스입니다. 인스턴스를 만드는 방법을 결정합니다.
Factory.java
package framework;
public abstract class Factory {
public final Product create(String owner) {
Product product = createProduct(owner);
registerProduct(product);
return product;
}
protected abstract Product createProduct(String owner);
protected abstract void registerProduct(Product product);
}
4-2. Product 클래스
Factory에서 생성되는 객체의 기본이 되는 클래스입니다.
Product.java
package framework;
public abstract class Product {
public abstract void use();
}
4-3. IDCardFactory 클래스
Factory 클래스로 정의된 메소드를 구현하는 구상 클래스입니다.
IDCardFactory.java
package idcard;
import java.util.ArrayList;
import framework.Factory;
import framework.Product;
public class IDCardFactory extends Factory {
private ArrayList<String> owners = new ArrayList<String>();
protected Product createProduct(String owner) {
return new IDCard(owner);
}
protected void registerProduct(Product product) {
IDCard icCard = (IDCard)product;
String owner = icCard.getOwner();
owners.add(owner);
}
public ArrayList<String> getOwners() {
return owners;
}
}
4-4. IDCard 클래스
Product 클래스에 정의된 메서드를 구현하는 구체적인 클래스입니다.
IDCard.java
package idcard;
import framework.Product;
public class IDCard extends Product {
private String owner;
IDCard(String owner) {
System.out.println(owner + "のカードを作ります。");
this.owner = owner;
}
public void use() {
System.out.println(owner + "のカードを使います。");
}
public String getOwner() {
return owner;
}
}
4-5. Main 클래스
메인 처리를 실시하는 클래스입니다.
Main.java
import framework.*;
import idcard.*;
public class Main {
public static void main(String[] args) {
Factory factory = new IDCardFactory();
Product card1 = factory.create("山田");
Product card2 = factory.create("鈴木");
Product card3 = factory.create("佐藤");
card1.use();
card2.use();
card3.use();
}
}
4-6. 실행 결과
山田のカードを作ります。
鈴木のカードを作ります。
佐藤のカードを作ります。
山田のカードを使います。
鈴木のカードを使います。
佐藤のカードを使います。
5. 장점
Factory/Product는 framework 패키지, IDCardFactory/IDCard는 idcard 패키지에 존재합니다.
framework 패키지는 idcard 패키지를 가져오지 않습니다. 즉, framework 패키지는 idcard 패키지에 의존하지 않는 형태입니다.
완전히 다른 '제품'과 '공장'을 만들려는 경우 프레임 워크 패키지의 내용을 수정할 필요가 없습니다.
6. GitHub
7. 디자인 패턴 목록
8. 참고
이번 기사 및 샘플 프로그램은 이하의 서적을 바탕으로 작성하였습니다.
매우 이해하기 쉽고 공부가되었습니다. 감사합니다.
디자인 패턴이나 샘플 프로그램에 대한 설명이 상세하게 쓰여져 있으므로, 꼭 서적의 분도 봐 주세요.
Reference
이 문제에 관하여(디자인 패턴 ~Factory Method~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/i-tanaka730/items/1f521866c7d699ddd093텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)