본문 바로가기

개인공부/소프트웨어 개발 패턴

(생성패턴) Factory Method : 팩토리메서드 패턴

팩토리 메서드는 메서드를 구상할때 팩토리 메서드가 구상하는 것이 아닌

Sub 클래스 메서드가 구상하게 만드는 패턴이다.

 

왜 사용해야 할까?

 

예를 들어 모바일 어플리케이션용 메서드를 만들었는데 안드로이드와 IOS 에 둘다 구동해야한다면

서브 클래스가 그것을 판별해서 구상하게 만드는 편이 유지보수가 편할 것 이다.

 

 

 

프로토타입 패턴과 유사하다.

 

실제 코드 

 

팩토리 메서드 클래스

 

 class ShapeFactory 
 {
     public virtual IShape GetShape(string type)
     {
         switch (type)
         {
             case "Circle":
                 return new Circle();
             case "Square":
                 return new Square();
             case "Rectangle":
                 return new Rectangle();
             default:
                 // no passed parameter or any non-known parameter returns null
                 return null;
         }
     }
 }

 

 

3가지 구상 클래스중 하나 (Shape 중 Rectangle)

 

    class Rectangle : IShape
    {
        public void draw()
        {
            Console.WriteLine("Inside rectangle's draw method");
        }
    }

 

 

 

프로그램 실행 코드

 

    class Program
    {
        static void Main(string[] args)
        {
            ShapeFactory factory = new ShapeFactory();
            IShape circle = factory.GetShape("Circle");
            IShape rectangle = factory.GetShape("Rectangle");
            IShape square = factory.GetShape("Square");

            circle.draw();
            rectangle.draw();
            square.draw();
           
        }
    }

 

 

결과값 ->

 

Inside Circle's draw method
Inside rectangle's draw method
Inside square's draw method