출처
이야기's G님 유튜브
게임 아이템과 아이템 생성을 구현해라
아이템을 생성하는 주체는 ItemCreator
아이템은 item 이라는 interface로 다룰 수 있어야함.
현재 아이템의 종류는 체력 회복 물약, 마력 회복 물약이 있음
public abstract class ItemCreator {
public Item create() {
Item item;
//step1 : 아이템 정보 가져옴
requestItemInfo();
//step2 : 아이템 생성
item = createItem();
//step3 : 아이템 생성정보 남김
createItemLog();
return item;
}
//아이템을 생성하기 전에 DB에서 아이템 정보 요청
abstract protected void requestItemInfo();
//아이템을 생성 후 아이템 복제 등의 불법을 방지하기 위해 DB에 아이템 생성정보 남김
abstract protected void createItemLog();
//아이템을 생성하는 알고리즘
abstract protected Item createItem();
}
아이템을 생성하는 주체 ItemCreator
아이템을 생성하기 전에 DB에서 아이템 정보 요청
아이템 생성 후 DB에 아이템 생성 정보 남김
public interface Item {
public void use();
}
아이템은 item이라는 인터페이스로 다룸
item은 use 함수를 기본 함수로 가지고 있음
public class HpPotion implements Item {
@Override
public void use() {
System.out.println("체력 회복!");
}
}
public class MpPotion implements Item {
@Override
public void use() {
System.out.println("마력 회복!");
}
}
HP 포션과 MP 포션, Item을 상속받아 만들어줌.
public class HpCreator extends ItemCreator {
@Override
protected void requestItemInfo() {
System.out.println("데이터 베이스에서 체력 회복 물약의 정보를 가져옴.");
}
@Override
protected void createItemLog() {
System.out.println("체력 회복 물약을 새로 생성 했습니다. " + new Date());
}
@Override
protected Item createItem() {
//작업
return new HpPotion();
}
}
ItemCreator를 상속받아 만들어줌.
아이템을 생성하기 전에 정보를 가져오고, 로그를 남긴 다음에 만들어줌
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();
}
}
데이터 베이스에서 체력 회복 물약의 정보를 가져옴.
체력 회복 물약을 새로 생성 했습니다. Tue Oct 04 22:57:49 KST 2022
체력 회복!
데이터 베이스에서 마력 회복 물약의 정보를 가져옴.
마력 회복 물약을 새로 생성 했습니다. Tue Oct 04 22:57:49 KST 2022
마력 회복!