@Getter @Setter
public class Zealot {
	
	private String name;
	private int hp;
	private int attack;

}
@Getter @Setter
public class Dragoon {
	
	private String name;
	private int hp;
	private int attack;

}

질럿과 드라군이 있다

둘을 생성하는 GateWay 라는 클래스도 있음

public class GateWay {
	// 여기서 질럿을 생성할 수도 있고 드라군을 생성할 수도 있음
	
	// 질럿을 생성하는 함수
	public Zealot 생성() {
		return new Zealot();
	}

}

main 도 있다

public class StarApp {
	public static void main(String[] args) {
		GateWay gateWay = new GateWay();
		Zealot zealot = gateWay.생성();
		
	}

}

근데 만약 드라군도 생성하고 싶다면?

게이트웨이에서 드라군을 생성하는 함수를 하나 더 만든다

public Dragoon 생성2() {
		return new Dragoon();
	}

이게 일반적인 생각..만들어야 하는 객체가 만약 100개면 함수 100개 만들어야됨

그래서 나온 대안

public Object 생성(int code) {
		if (code == 1) {
			return new Zealot();
		} else if (code == 2) {
			return new Dragoon();
		}
		return null;
	}