다형적인 팩토리 메서드 패턴 1

이전에 분무기 만들 때에도 매개변수로 enum 여러 개를 받았었음

매개변수로 처리하기보다 다형성을 이용하는게 OO적인 사고방식

createOrNull() 정적 메서드는 다형적으로 구현할 수 없음

  • 사실 전역함수를 클래스 내부에 감싸놓은게 전부니까

createOrNull() 정적 메서드가 Cup 클래스에서 빠짐

Menu 추상 클래스를 새로 만듦

  • 이를 상속해서 createCupOrNull() 추상 메서드를 각 나라 클래스에 맞게 오버라이딩
  • Cup 클래스의 생성자는 패키지 접근 제어자라서 같은 패키지에 있는 Menu 추상 클래스에서만 호출 가능하도록 구현

  • 참고로 Menu 클래스를 인터페이스가 아닌 추상 클래스로 만든 이유는, 나중에 상태를 나타내는 멤버 변수가 추가될 가능성이 높기 때문
  • 가상 생성자:
    • 추상(가상)인데 각 자식 클래스에서 이를 오버라이딩해서 각 자식 클래스를 생성하는 생성자를 구현

0건의 항목