[Design Pattern] 팩토리 메소드 패턴
- WEB/JAVA
- 2020. 7. 29. 01:12
- 팩토리 메소드 패턴에서 템플릿 메소드 패턴의 사용됨을 안다.
- 팩토리 메소드 패턴에서의 구조와 구현의 분리를 이해
- creator 클래스 내에 create 함수가 템플릿 메소드 패턴처럼 여러 단계로 나누어지는 경우가 있다.
- ex ) oper1 실행 후 oper2 실행 ... 이것을 사용
요구사항
- 게임 아이템과 아이템 생성 구현
- 아이템을 생성하기 전에 데이터 베이스에서 아이템 정보 요청
- 아이템 생성 후 아이템 복제 등 불법 방지를 위해 DB에서 아이템 생성정보를 남김
- 아이템을 생성하는 주체를 ItemCreator로 이름을 짓는다.
- 아이템은 item이라는 인터페이스로 다룬다( use함수를 기본으로 가지고 있다.)
- 현재 아이템의 종류는 체력 회복 물약, 마력 회복 물약이 있다.
public interface Item {
public void use();
}
public abstract class ItemCreator {
public Item create(){
Item item;
requestItemsInfo();
item = createItem();
createItemLog();
return item;
}
abstract protected void requestItemsInfo();
abstract protected void createItemLog();
abstract protected Item createItem();
}
public class HpPotion implements Item {
@Override
public void use(){
System.out.println("체력회복");
}
}
public class MpPotion implements Item {
@Override
public void use(){
System.out.println("마력회복");
}
}
public class HpCreator extends ItemCreator {
@Override
protected void requestItemsInfo(){
System.out.println("DB 회복 물약 정보 가져오기");
}
@Override
protected void createItemLog(){
System.out.println("회복 물약 생성" + time);
}
@Override
protected Item createItem(){
return new HpPotion();
}
}
public class MpCreator extends ItemCreator {
@Override
protected void requestItemsInfo(){
System.out.println("DB 마력 물약 정보 가져오기");
}
@Override
protected void createItemLog(){
System.out.println("마력 물약생성" + time);
}
@Override
protected void createItem(){
return new MpPotion();
}
}
public class Main {
public static void main(String[] args){
ItemCreator creator;
Item item;
creator = new HpCreator();
item = creator.create();
item.use();
creator = new MpCreator();
item = creator.create();
item.use();
}
}
참고
'WEB > JAVA' 카테고리의 다른 글
[Design pattern]프록시 패턴 (0) | 2020.07.29 |
---|---|
[design pattern] 템플릿 메소드 패턴 (0) | 2020.07.28 |
[예외처리]Checked Exception, unChecked Exception (0) | 2020.07.22 |
Wrapper 클래스 개념과 사용하는 이유 (0) | 2020.07.20 |