편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
2번째 줄: | 2번째 줄: | ||
;factory method pattern; factory method, factory pattern | ;factory method pattern; factory method, factory pattern | ||
;팩토리 메소드 패턴, 팩토리 메서드, 팩토리 패턴 | ;팩토리 메소드 패턴, 팩토리 메서드, 팩토리 패턴 | ||
* 하위클래스에서 인스턴스를 생성하도록 하는 구조 | * 하위클래스에서 인스턴스를 생성하도록 하는 구조 | ||
* 공장에서 제품을 만들어내듯, OO공장 인스턴스가 OO을 만들어내는 구조 | * 공장에서 제품을 만들어내듯, OO공장 인스턴스가 OO을 만들어내는 구조 | ||
* 서브클래스에서 오브젝트 생성 방법과 클래스를 결정하도록 강제하는 구조 | * 서브클래스에서 오브젝트 생성 방법과 클래스를 결정하도록 강제하는 구조 | ||
* 추상 단계<ref>interface 또는 abstract class</ref>에서는 생성하려는 객체의 클래스를 정확히 지정하지 않음 | |||
* ConcreteCreator 클래스에 오브젝트 생성을 맡김 | |||
* 추상 단계<ref>interface 또는 abstract class</ref>에서는 생성하려는 객체의 클래스를 정확히 지정하지 | |||
* ConcreteCreator 클래스에 오브젝트 생성을 | |||
https://upload.wikimedia.org/wikipedia/commons/thumb/a/a3/FactoryMethod.svg/420px-FactoryMethod.svg.png | |||
==예제 (java)== | ==예제 (java)== | ||
< | <source lang='java'> | ||
interface CarFactory { | interface CarFactory { | ||
public Car makeCar(); | public Car makeCar(); | ||
48번째 줄: | 27번째 줄: | ||
public String getType() { return "Sedan"; } | public String getType() { return "Sedan"; } | ||
} | } | ||
</ | |||
public class Main { | |||
public static final void main(String[] args) { | |||
SedanFactory sedanFactory = new SedanFactory(); | |||
Car car = sedanFactory.makeCar(); | |||
System.out.println("Type: " + car.getType() ); | |||
} | |||
} | |||
</source> | |||
==같이 보기== | ==같이 보기== | ||
*[[메소드 오버로딩]] | |||
* [[ | *[[템플릿 메소드 패턴]] | ||
* [[ | *[[싱글턴 패턴]] | ||
* [[ | *[[컴포지트 패턴]] | ||
* [[ | *[[이터레이터 패턴]] | ||
* [[ | *[[디자인 패턴]] | ||
* [[ | **[[헤드 퍼스트 디자인 패턴]] | ||
* [[ | *[[의존성 역전]] | ||
* [[ | *[[추상 팩토리 패턴]] | ||
* [[추상 팩토리 패턴]] | *[[DAO]] | ||
* [[ | *[[DAOFactory]] | ||
==주석== | |||
<references/> | |||
==참고== | ==참고== | ||
* | *http://en.wikipedia.org/wiki/Factory_method_pattern | ||
[[분류: 디자인 패턴]] | [[분류: 디자인 패턴]] |