독서노트22: 직책 체인 모드
public abstract class Handler
{
protected Handler successor;
public void SetSuccessor(Handler successor)
{
this.successor = successor;
}
public abstract void HandlerRequest(object request);
}
구체적인 실현류는 완전한 직책 체인의 한 부분이다.
public class CreateHandler0 : Handler
{
public override void HandlerRequest(object request)
{
string value = request as String;
Regex regex = new Regex(@"[\u4e00-\u9fa5]", RegexOptions.IgnoreCase);
if (regex.IsMatch(value))
{
Console.WriteLine(string.Format(@"'{0}' ", value));
}
else
{
successor.HandlerRequest(request);
}
}
}
public class CreateHandler1 : Handler
{
public override void HandlerRequest(object request)
{
string value = request as String;
Regex regex = new Regex(@"^\d+$", RegexOptions.IgnoreCase);
if (regex.IsMatch(value))
{
Console.WriteLine(string.Format(@"{0} ", int.Parse(value)));
}
else
{
successor.HandlerRequest(request);
}
}
}
public class CreateHandler2 : Handler
{
public override void HandlerRequest(object request)
{
Console.WriteLine(string.Format(@"{0} 。",request));
}
}
호출:
static void Main(string[] args)
{
Handler handler0 = new CreateHandler0();
Handler handler1 = new CreateHandler1();
Handler handler2 = new CreateHandler2();
handler0.SetSuccessor(handler1);
handler1.SetSuccessor(handler2);
string string1 = " ";
string string2 = "110";
string string3 = "++--";
Console.WriteLine(" :{0}",string1);
handler0.HandlerRequest(string1);
Console.WriteLine(" :{0}", string2);
handler0.HandlerRequest(string2);
Console.WriteLine(" :{0}", string3);
handler0.HandlerRequest(string3);
Console.Read();
}
이렇게 하면 요청 절차에 대해 수시로 증가하거나 수정할 수 있어 처리 대상의 유연성을 강화할 수 있다.구조적으로 보면 건설자 모델과 유사한 것들이 있는데 모두 절차를 분리한다.다만 건설자는 뒤를 가리킬 필요가 없다.모델 코드:http://download.csdn.net/detail/yysyangyangyangshan/4173863
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
localStorage에 객체를 추가하는 방법은 무엇입니까?이 노트에서는 localStorage에 객체를 삽입하는 방법을 보여드리겠습니다. 경우에 따라 로컬 스토리지 또는 세션 스토리지에 데이터를 개체로 저장해야 할 수 있습니다. 어떻게 이것을 달성할 수 있습니까? 객체가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.