728x90

일련의 프로세스가 정형화 되어 있고 각 프로세스의 변경사항이 있을 경우

템플릿패턴 형태로 관리하면 효율적일 것 같다.

 

UML

https://www.youtube.com/watch?v=qr7I18Lhsl8

소스코드

using System;

namespace Template
{
    class Program
    {
        static void Main(string[] args)
        {
            //input data
            string clientInfo = "";
            string sendData = "";
            string resultData = "";


            //기본접속
            AbstConnectProcess connectHelper = new DefaultConnectHelper();
            connectHelper.Connect(out resultData, clientInfo, sendData);
            Console.WriteLine("default connect result :: " + resultData);

            //표준접속
            connectHelper = new StandardConnectHelper();
            connectHelper.Connect(out resultData, clientInfo, sendData);
            Console.WriteLine("standard connect result :: " + resultData);


        }
    }
}
namespace Template
{
    public abstract class AbstConnectProcess
    {
        //자식 클래스 외에는 접근하지 못하도록 projected 로!
        protected abstract void CheckServerState(string clinetInfo);
        protected abstract void CheckSecurity(string clientInfo);
        protected abstract void SendData(string sendData);
        protected abstract void ReceiveData(out string resultData);

        //override 되지 않도록 virtual 선언하지 않도록
        public void Connect(out string resultData, string clientInfo, string sendData)
        {
            CheckServerState(clientInfo);
            CheckSecurity(clientInfo);
            SendData(sendData);
            ReceiveData(out resultData);
        }

    }
}
using System;

namespace Template
{
    class DefaultConnectHelper : AbstConnectProcess
    {
        protected override void CheckSecurity(string clientInfo)
        {
            Console.WriteLine("기본 보안 체크");
        }

        protected override void CheckServerState(string clinetInfo)
        {
            Console.WriteLine("기본 서브 체크");
        }

        protected override void ReceiveData(out string resultData)
        {
            Console.WriteLine("기본 데이터 수신");
            resultData = "기본 연결 성공";
        }

        protected override void SendData(string sendData)
        {
            Console.WriteLine("기본 데이터 송신");
        }
    }
}
using System;

namespace Template
{
    class StandardConnectHelper : AbstConnectProcess
    {
        protected override void CheckSecurity(string clientInfo)
        {
            Console.WriteLine("표준 보안 체크");
        }

        protected override void CheckServerState(string clinetInfo)
        {
            Console.WriteLine("표준 서브 체크");
        }

        protected override void ReceiveData(out string resultData)
        {
            Console.WriteLine("표준 데이터 수신");
            resultData = "표준 연결 성공";
        }

        protected override void SendData(string sendData)
        {
            Console.WriteLine("표준 데이터 송신");
        }

       
    }
}

 

출력결과

728x90

'Skills > DesignPattern' 카테고리의 다른 글

[DesignPattern]FlyWeight  (0) 2020.03.12

+ Recent posts