강의
https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4#

사전적 의미의 팩토리란??
무언가 물건을 만드는 공장을 의미한다. 팩토리 메소드 패턴도 뭔가 만드는(객체) 공장으로 이해하시면 됩니다.
팩토리메소드의 정의
객체 생성 처리를 서브 클래스로 분리 해 처리하도록 캡슐화하는 패턴이다. 즉, 객체의 생성 코드를 별도의 클래스/메서드로 분리함으로써 객체 생성의 변화에 대비하는 데 유용하고 확장성이 좋아진다는 장점이 있습니다..
팩토리 메소드 사용 이유는?
팩토리 메소드 패턴을 사용하는 이유는 클래스간의 결합도를 낮추기 위한것입니다. 결합도라는 것은 간단히 말해 클래스의 변경점이 생겼을 때 얼마나 다른 클래스에도 영향을 주는가입니다. 팩토리 메소드 패턴을 사용하는 경우 직접 객체를 생성해 사용하는 것을 방지하고 서브 클래스에 위임함으로써 보다 효율적인 코드 제어를 할 수 있고 의존성을 제거합니다. 결과적으로 결합도 또한 낮출 수 있습니다.
<요구사항>
1. 게임 아이템과 아이템 생성을 구현해 주세요
- 아이템을 생성하기 전에 DB에서 아이템 정보 요청
- 아이템을 생성 후 아이템 복제 등의 불법을 방재하기 위해 DB에 아이템 생성 정보를 남김
2. 아이템을 생성하는 주체를 IterCreater로 이름 짓는다.
3. 아이템은 item이라는 interface로 다룰 수 있다.
- item은 use 함수를 기본 함수로 한다.
4. 현재 아이템의 종류는 체력 회복 물약, 마력 회복 물약이 있다.
framework.Item.java
public interface Item {
public void use();
}
framework.ItemCreater.java
public abstract class ItemCreateor {
// 이걸 팩토리 메소드 라고 하고 이 메소드를 포함하는 패턴을 팩토리 메소드 패턴이라 한다
-> 근데 이것이 템플릿 메소드와 같다
public Item create() {
Item item;
// step1
requestItemsInfo();
// step 2
item = createItem();
// step 3
createItemLog();
return item;
}
// 아이템을 생성하기전에 데이터베이스에서 아이템 정보 요청
abstract protected void requestItemsInfo();
// 아이템을 생성 후 아이템 복제 등의 불법을 방지하기 위한 메소드
abstract protected void createItemLog();
// 아이템을 생성하는 알고리즘
abstract protected Item createItem();
}
concrete.HpCreator.java
import java.util.Date;
import designpattern.chapter4.FactoryMethod_Pattern.framework.Item;
import designpattern.chapter4.FactoryMethod_Pattern.framework.ItemCreateor;
public class HpCreator extends ItemCreateor{
@Override
protected void requestItemsInfo() {
System.out.println("데이터베이스에서 체력 회복 물약의 정보를 가져옵니다");
}
@Override
protected void createItemLog() {
System.out.println("체력 회복 물약을 새로 생성 했습니다." + new Date());
}
@Override
protected Item createItem() {
// 작업
return new HpPotion();
}
}
concrete.HpPotion.java
public class HpPotion implements Item{
@Override
public void use() {
System.out.println("체력 회복 !!");
}
}
concrete.MpCreator
import java.util.Date;
import designpattern.chapter4.FactoryMethod_Pattern.framework.Item;
import designpattern.chapter4.FactoryMethod_Pattern.framework.ItemCreateor;
public class MpCreator extends ItemCreateor{
@Override
protected void requestItemsInfo() {
System.out.println("데이터베이스에서 마력 회복 물약의 정보를 가져옵니다");
}
@Override
protected void createItemLog() {
System.out.println("마력 회복 물약을 새로 생성 했습니다." + new Date());
}
@Override
protected Item createItem() {
// 작업
return new MpPotion();
}
}
concrete.MpPotion
public class MpPotion implements Item{
@Override
public void use() {
System.out.println("마력 회복 !!");
}
}
Main.java
public class Main {
public static void main(String[] args) {
ItemCreateor creator;
Item item;
creator = new HpCreator();
item = creator.create();
item.use();
creator = new MpCreator();
item = creator.create();
item.use();
}
}
참고
팩토리 메소드 패턴(Factory Method Pattern) :: JDM's Blog
이번 포스팅은 팩토리 메소드 패턴Factory Method Pattern에 대해 알아보고자 합니다. Factory Method Pattern 기본적으로 팩토리는 공장이란 뜻을 내포하고 있습니다. 따라서 팩토리 메소드 패턴도 무언가를 위한 공장이라고 보면 됩니다. 일반적으로 팩토리 메소드 패턴은 다음처럼 말할 수 있습니다. 객체를 만들어내는 부분을 서브 클래스Sub-Class에 위임하는 패턴. 즉, new 키워드를 호출하는 부분을 서브 클래스에 위임하는 겁
jdm.kr
https://niceman.tistory.com/143
Java(자바) 디자인패턴 - 팩토리(Factory Method) 패턴 설명 및 예제소스
Java 디자인패턴 - 팩토리 메소드 패턴 이번 시간에는 자바 디자인 패턴 중 팩토리 메소드 패턴(Factory Method Pattern)에 대해서 쉬운 예제와 함께 설명 드리려 합니다. 팩토리 메소드 패턴은 요약해서 말씀드리..
niceman.tistory.com
소스코드
https://github.com/garam-park/java-designpattern
garam-park/java-designpattern
Java Design Patter Example for Coders in korean. Contribute to garam-park/java-designpattern development by creating an account on GitHub.
github.com
'Java > design pattern' 카테고리의 다른 글
[java] 6강 프로토 타입 패턴(Prototype Pattern) (2) | 2020.01.22 |
---|---|
[java] 5강 싱글톤 패턴(singleton pattern) (0) | 2020.01.22 |
[java] 3강 템플릿 메소드 패턴(Template Method Pattern) (0) | 2020.01.13 |
[java] 2강 어댑터 패턴(adapter pattern) (0) | 2020.01.13 |
[java] 1강 스트래티지 패턴(strategy pattern) (0) | 2020.01.08 |
강의
https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4#

사전적 의미의 팩토리란??
무언가 물건을 만드는 공장을 의미한다. 팩토리 메소드 패턴도 뭔가 만드는(객체) 공장으로 이해하시면 됩니다.
팩토리메소드의 정의
객체 생성 처리를 서브 클래스로 분리 해 처리하도록 캡슐화하는 패턴이다. 즉, 객체의 생성 코드를 별도의 클래스/메서드로 분리함으로써 객체 생성의 변화에 대비하는 데 유용하고 확장성이 좋아진다는 장점이 있습니다..
팩토리 메소드 사용 이유는?
팩토리 메소드 패턴을 사용하는 이유는 클래스간의 결합도를 낮추기 위한것입니다. 결합도라는 것은 간단히 말해 클래스의 변경점이 생겼을 때 얼마나 다른 클래스에도 영향을 주는가입니다. 팩토리 메소드 패턴을 사용하는 경우 직접 객체를 생성해 사용하는 것을 방지하고 서브 클래스에 위임함으로써 보다 효율적인 코드 제어를 할 수 있고 의존성을 제거합니다. 결과적으로 결합도 또한 낮출 수 있습니다.
<요구사항>
1. 게임 아이템과 아이템 생성을 구현해 주세요
- 아이템을 생성하기 전에 DB에서 아이템 정보 요청
- 아이템을 생성 후 아이템 복제 등의 불법을 방재하기 위해 DB에 아이템 생성 정보를 남김
2. 아이템을 생성하는 주체를 IterCreater로 이름 짓는다.
3. 아이템은 item이라는 interface로 다룰 수 있다.
- item은 use 함수를 기본 함수로 한다.
4. 현재 아이템의 종류는 체력 회복 물약, 마력 회복 물약이 있다.
framework.Item.java
public interface Item {
public void use();
}
framework.ItemCreater.java
public abstract class ItemCreateor {
// 이걸 팩토리 메소드 라고 하고 이 메소드를 포함하는 패턴을 팩토리 메소드 패턴이라 한다
-> 근데 이것이 템플릿 메소드와 같다
public Item create() {
Item item;
// step1
requestItemsInfo();
// step 2
item = createItem();
// step 3
createItemLog();
return item;
}
// 아이템을 생성하기전에 데이터베이스에서 아이템 정보 요청
abstract protected void requestItemsInfo();
// 아이템을 생성 후 아이템 복제 등의 불법을 방지하기 위한 메소드
abstract protected void createItemLog();
// 아이템을 생성하는 알고리즘
abstract protected Item createItem();
}
concrete.HpCreator.java
import java.util.Date;
import designpattern.chapter4.FactoryMethod_Pattern.framework.Item;
import designpattern.chapter4.FactoryMethod_Pattern.framework.ItemCreateor;
public class HpCreator extends ItemCreateor{
@Override
protected void requestItemsInfo() {
System.out.println("데이터베이스에서 체력 회복 물약의 정보를 가져옵니다");
}
@Override
protected void createItemLog() {
System.out.println("체력 회복 물약을 새로 생성 했습니다." + new Date());
}
@Override
protected Item createItem() {
// 작업
return new HpPotion();
}
}
concrete.HpPotion.java
public class HpPotion implements Item{
@Override
public void use() {
System.out.println("체력 회복 !!");
}
}
concrete.MpCreator
import java.util.Date;
import designpattern.chapter4.FactoryMethod_Pattern.framework.Item;
import designpattern.chapter4.FactoryMethod_Pattern.framework.ItemCreateor;
public class MpCreator extends ItemCreateor{
@Override
protected void requestItemsInfo() {
System.out.println("데이터베이스에서 마력 회복 물약의 정보를 가져옵니다");
}
@Override
protected void createItemLog() {
System.out.println("마력 회복 물약을 새로 생성 했습니다." + new Date());
}
@Override
protected Item createItem() {
// 작업
return new MpPotion();
}
}
concrete.MpPotion
public class MpPotion implements Item{
@Override
public void use() {
System.out.println("마력 회복 !!");
}
}
Main.java
public class Main {
public static void main(String[] args) {
ItemCreateor creator;
Item item;
creator = new HpCreator();
item = creator.create();
item.use();
creator = new MpCreator();
item = creator.create();
item.use();
}
}
참고
팩토리 메소드 패턴(Factory Method Pattern) :: JDM's Blog
이번 포스팅은 팩토리 메소드 패턴Factory Method Pattern에 대해 알아보고자 합니다. Factory Method Pattern 기본적으로 팩토리는 공장이란 뜻을 내포하고 있습니다. 따라서 팩토리 메소드 패턴도 무언가를 위한 공장이라고 보면 됩니다. 일반적으로 팩토리 메소드 패턴은 다음처럼 말할 수 있습니다. 객체를 만들어내는 부분을 서브 클래스Sub-Class에 위임하는 패턴. 즉, new 키워드를 호출하는 부분을 서브 클래스에 위임하는 겁
jdm.kr
https://niceman.tistory.com/143
Java(자바) 디자인패턴 - 팩토리(Factory Method) 패턴 설명 및 예제소스
Java 디자인패턴 - 팩토리 메소드 패턴 이번 시간에는 자바 디자인 패턴 중 팩토리 메소드 패턴(Factory Method Pattern)에 대해서 쉬운 예제와 함께 설명 드리려 합니다. 팩토리 메소드 패턴은 요약해서 말씀드리..
niceman.tistory.com
소스코드
https://github.com/garam-park/java-designpattern
garam-park/java-designpattern
Java Design Patter Example for Coders in korean. Contribute to garam-park/java-designpattern development by creating an account on GitHub.
github.com
'Java > design pattern' 카테고리의 다른 글
[java] 6강 프로토 타입 패턴(Prototype Pattern) (2) | 2020.01.22 |
---|---|
[java] 5강 싱글톤 패턴(singleton pattern) (0) | 2020.01.22 |
[java] 3강 템플릿 메소드 패턴(Template Method Pattern) (0) | 2020.01.13 |
[java] 2강 어댑터 패턴(adapter pattern) (0) | 2020.01.13 |
[java] 1강 스트래티지 패턴(strategy pattern) (0) | 2020.01.08 |