Both sides previous revisionPrevious revisionNext revision | Previous revision |
design_pattern:factory_method_pattern [2017/10/27 12:55] – [구체적인 구현하고 있는 측] ledyx | design_pattern:factory_method_pattern [2021/02/07 03:26] (current) – [Factory Method Pattern] ledyx |
---|
하위 클래스에서 인스턴스 작성 | 하위 클래스에서 인스턴스 작성 |
* 상위 클래스에서 인스턴스 작성법의 뼈대를 세우고, 구체적인 작성은 하위 클래스에서 실행. | * 상위 클래스에서 인스턴스 작성법의 뼈대를 세우고, 구체적인 작성은 하위 클래스에서 실행. |
| * [[template_method_pattern]]을 인스턴스 생성에 적용한 패턴. |
| |
{{tag>Architecture Modeling DesignPattern Creational}} | {{tag>Architecture Modeling Design_Pattern Creational}} |
| |
= 인스턴스 생성을 위한 Framework(골격) 측 = | = 인스턴스 생성을 위한 Framework(골격) 측 = |
<sxh java> | <sxh java ; title:Product> |
package framework; | package framework; |
| |
/* Product */ | |
public abstract class Product { | public abstract class Product { |
public abstract void use(); | public abstract void use(); |
</sxh> | </sxh> |
| |
<sxh java> | <sxh java ; title:Creator> |
package framework; | package framework; |
| |
/* Creator */ | /* 가장 핵심 부분! */ |
public abstract class Factory { | public abstract class Factory { |
public final Product create(String owner) { | public final Product create(String owner) { |
| |
= 구체적인 구현하고 있는 측 = | = 구체적인 구현하고 있는 측 = |
<sxh java> | <sxh java ; title:ConcreteProduct> |
package product; | package product; |
| |
import framework.Product; | import framework.Product; |
| |
/* ConcreteProduct */ | |
public class IDCard extends Product { | public class IDCard extends Product { |
| |
</sxh> | </sxh> |
| |
<sxh java> | <sxh java ; title:ConcreteCreator> |
package product; | package product; |
| |
import framework.Product; | import framework.Product; |
| |
/* ConcreteCreator */ | |
public class IDCardFactory extends Factory { | public class IDCardFactory extends Factory { |
| |
</sxh> | </sxh> |
| |
= 실행 = | = Client = |
<sxh java> | <sxh java> |
import framework.*; | import framework.*; |