728x90
일련의 프로세스가 정형화 되어 있고 각 프로세스의 변경사항이 있을 경우
템플릿패턴 형태로 관리하면 효율적일 것 같다.
UML
소스코드
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 |
---|