2018년 5월 16일 수요일

[DesignPattern]Enum Factory Method Pattern

Factory Method Pattern에 Enum을 사용하여 개선된 부분에 대해 주관적인 내용을 담고있습니다.

Enum은 싱글톤의 특성을 암묵적으로 갖고 있다. Factory Method Pattern만 사용하는 경우 같은 용도의 클래스를 중복생성 하여 사용하게 된다.

public interface 팩토리
   public 냉면  냉면을만들다(String 냉면주문);

public class 물냉면팩토리 implements 팩토리
   public 냉면  냉면을만들다(String 냉면주문){
      냉면주문을 받아 해당하는 냉면을 만든다.
   }

public class 비빔냉면팩토리 implements 팩토리
   public 냉면  냉면을만들다(String 냉면주문){
      냉면주문을 받아 해당하는 냉면을 만든다.
   }
//B회사의 공장은 물냉면 공장과 비빔냉면 공장이 있다. 경기악화로 인하여 두 공장 중 한 공장을 패쇄해야하는 상황 발생되었다.

public class 냉면팩토리 implements 팩토리
   물냉{
      public 냉면  냉면을만들다(String 냉면주문){
         냉면주문을 받아 해당하는 냉면을 만든다.
      }
   },
   비냉{
      public 냉면  냉면을만들다(String 냉면주문){
         냉면주문을 받아 해당하는 냉면을 만든다.
      }
   };
//한 공장을 패쇄하기보다 둘다 운영하기 위해 ENUM을 도입하였다.

How to use(사용방법)
팩토리 팩토리 = 냉면팩토리.물냉;
냉면 냉면 = 팩토리.냉면을만들다(진주냉면);
//진주 비빔냉면을 주문받아 배달한다.

"보통 냉면을 구분할 때 물냉면이냐 비빔냉면이냐, 평양냉면이냐 함흥냉면이냐로 나눈다. 하지만, 진정한 냉면 마니아들에게는 또 다른 구분법이 있다. 바로  평양냉면이냐 해주냉면이냐다.
바로 평양냉면이냐 해주냉면이나다.
함흥냉면과는 다르게 해주냉면 또한 기본적으로 물냉면이다."

백헌석 / 최혜림 공저, 냉면열전 : 담백하고 시원한 한국인의 소울푸드

Reference(참조)
http://effectiveprogramming.tistory.com/m/entry/Enum-Abstract-Factory-패턴?category=660013
https://books.google.co.kr/books?id=cRkeCgAAQBAJ&pg=PT184&lpg=PT184&dq=물냉면+비빔냉면+언제+구분&source=bl&ots=b_hR2gCkcB&sig=7-H2TXK4soO6xjyxyuu4P8kyjtM&hl=ko&sa=X&ved=0ahUKEwjx596vu4nbAhXIybwKHY5LB9kQ6AEIhQEwDA#v=onepage&q=물냉면%20비빔냉면%20언제%20구분&f=false

댓글 없음:

댓글 쓰기