관리 메뉴

프로그램 소스

[설계 패턴 C#] 팩토리 메서드 패턴(Factory Method Pattern) 본문

설계 패턴(C#)

[설계 패턴 C#] 팩토리 메서드 패턴(Factory Method Pattern)

Only 프로그램 소스 언제나휴일 2016.04.17 13:49

팩토리 메서드 패턴(Factory Method Pattern)


FactoryMethod.zip

"본문 내용"은 언제나 휴일 본 사이트에 있습니다.

팩토리 메서드 패턴(Factory Method Pattern)


 

    EHApp.cs

namespace FactoryMethod

{

    abstract class EHApp //뼈대를 제공하는 추상 클래스

    {

        protected IView MainView

        {

            get;

            set;

        }

        public virtual void InitInstance()

        {

            MainView = MakeView();//뷰 개체를 설정

        }

        public virtual void Run()

        {

            MainView.Show();

        }

        public virtual void ExitInstance()

        {

            MainView = null;

        }

        protected abstract IView MakeView();//뷰 개체를 생성하는 메서드 약속

    }

}


 IView.cs

namespace FactoryMethod

{

    interface IView

    {

        void Show();//보여주기 기능에 대한 메서드 약속

    }

}

 

MyView.cs

using System;

namespace FactoryMethod

{

    class MyView:IView

    {

        public MyView()

        {

            Console.WriteLine("MyView 개체 생성");

        }

        public void Show()

        {

            Console.WriteLine("메인 뷰 활성화");

        }

    }

}

 

MyApp.cs

using System;

namespace FactoryMethod

{

    class MyApp:EHApp

    {

        public override void InitInstance()//재정의

        {

            Console.WriteLine("MyApp 초기화");

            base.InitInstance();

        }

        public override void ExitInstance()//재정의

        {

            base.ExitInstance();

            Console.WriteLine("MyApp 해제");

        }

        protected override IView MakeView()//뷰 개체를 생성하는 메서드 구체적 구현

        {

            return new MyView();

        }

    }

}

 

▶Program.cs

namespace FactoryMethod

{

    class Program

    {

        static void Main(string[] args)

        {

            MyApp app = new MyApp();

            app.InitInstance();

            app.Run();

            app.ExitInstance();

        }

    }

}

 

▶실행 결과

MyApp 초기화

MyView 개체 생성

메인 뷰 활성화

MyApp 해제

 

0 Comments
댓글쓰기 폼