C\#디자인 모델 의 ChainOf Responsibility 직책 체인 모델 해결 진위 미 원숭이 왕 문제 실례

본 고 는 C\#디자인 모델 의 ChainOf Responsibility 직책 체인 모델 이 진위 미 원숭이 왕 문 제 를 해결 하 는 것 을 사례 로 서술 했다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
이론 적 정의
직책 체인 모드 는 한 대상 에 게 요청 을 합 니 다.만약 에 이 대상 이 이 요 구 를 처리 할 수 없다 면 다음 대상 을 지정 하여 이 요 구 를 처리 할 것 입 니 다.이 요청 이 처 리 될 때 까지.
2.예 를 들 어
수요 설명:에서 진위 미 원숭이 왕 의 판별 과정
여섯 귀 히 말 라 야 원숭이 와 손오공 은 외형 이 똑 같 을 뿐만 아니 라 능력 도 똑 같 아서 어디 를 가도 누가 진짜 인지,누가 가짜 인지 분간 할 수 없다!
① 관음 보살(GuangyinBodhisattva)은 을 몰래 읽 고 두 사람 이 함께 아픔 을 외 치 며 보살 은 어 쩔 수 없다.
② 이 천 왕(LiTianWang)은 요경 을 받 아 비 추 는데 거울 속 에 두 손오공 이 있어 서 조금도 차이 가 없다.옥황상제 도 분간 할 수 없다.
③ 당나라 승려(TangSeng)가 을 읽 고 두 사람 이 함께 고통 을 호소 하 며 당나라 승려 들 도 진 위 를 모른다.
④ 염라 전의 자세 한 이 야 기 를 들 으 면 진 위 를 가 릴 수 있 지만 말 을 하지 못 한다.
⑤ 마지막 에 여래(RuLai)불 에 의 해 진 위 를 가 려 내 고 모든 신선 들 이 듣 지 못 한 새로운 종 류 였 다.여섯 귀 히 말 라 야 원숭이.
3.구체 적 인 코딩
1.인 터 페 이 스 를 추가 하고 처리 방법 을 정의 합 니 다.다음 신선 을 가리 키 는 속성 입 니 다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Com.Design.Gof.ChainOfResponsibility
{
  /// <summary>
  ///      
  /// </summary>
  public enum TheRealMonkeyKing {
    SunWukong=1,//   
    SixEarMacaque=2//    
  }
  public interface IHandler
  {
    /// <summary>
    ///        
    /// </summary>
    /// <param name="SunWukong">   </param>
    /// <param name="SixEarMacaque">    </param>
    /// <returns></returns>
    TheRealMonkeyKing Handler(string SunWukong, string SixEarMacaque);
    /// <summary>
    ///                
    /// </summary>
    IHandler NextHandler{get;set;}
  }
}

2.신선-관음 보살

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Com.Design.Gof.ChainOfResponsibility
{
  public class GuangYinBodhisattva:IHandler
  {
    /// <summary>
    ///             
    /// </summary>
    /// <param name="SunWukong">   </param>
    /// <param name="SixEarMacaque">    </param>
    /// <returns></returns>
    public TheRealMonkeyKing Handler(string SunWukong, string SixEarMacaque){
      Console.WriteLine("      《    》,      ,      ,           , ,      ");
      return NextHandler.Handler(SunWukong,SixEarMacaque);
    }
    /// <summary>
    ///                 
    /// </summary>
    public IHandler NextHandler { get; set; }
  }
}

3.신선-토 타 이 천 왕

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Com.Design.Gof.ChainOfResponsibility
{
  public class LiTianWang : IHandler
  {
    /// <summary>
    ///            
    /// </summary>
    /// <param name="SunWukong">   </param>
    /// <param name="SixEarMacaque">    </param>
    /// <returns></returns>
    public TheRealMonkeyKing Handler(string SunWukong, string SixEarMacaque)
    {
      Console.WriteLine("         ,         ,    。      ,         ,       ");
      return NextHandler.Handler(SunWukong, SixEarMacaque);
    }
    /// <summary>
    ///                 
    /// </summary>
    public IHandler NextHandler { get; set; }
  }
}

4.신선-당승(사실 지금 은 신선 이 아니다)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Com.Design.Gof.ChainOfResponsibility
{
  public class TangSeng : IHandler
  {
    /// <summary>
    ///           
    /// </summary>
    /// <param name="SunWukong">   </param>
    /// <param name="SixEarMacaque">    </param>
    /// <returns></returns>
    public TheRealMonkeyKing Handler(string SunWukong, string SixEarMacaque)
    {
      Console.WriteLine("    《    》,      ,         ,        ,      ");
      return NextHandler.Handler(SunWukong, SixEarMacaque);
    }
    /// <summary>
    ///                 
    /// </summary>
    public IHandler NextHandler { get; set; }
  }
}

5.신선-염라전 자세히 듣다

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Com.Design.Gof.ChainOfResponsibility
{
  public class YanLuoDianDiTing : IHandler
  {
    /// <summary>
    ///               
    /// </summary>
    /// <param name="SunWukong">   </param>
    /// <param name="SixEarMacaque">    </param>
    /// <returns></returns>
    public TheRealMonkeyKing Handler(string SunWukong, string SixEarMacaque)
    {
      Console.WriteLine("              ,       ,           :    ");
      return NextHandler.Handler(SunWukong, SixEarMacaque);
    }
    /// <summary>
    ///                 
    /// </summary>
    public IHandler NextHandler { get; set; }
  }
}

6.신선-여래 부처님

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Com.Design.Gof.ChainOfResponsibility
{
  public class RuLai : IHandler
  {
    /// <summary>
    ///           
    /// </summary>
    /// <param name="SunWukong">   </param>
    /// <param name="SixEarMacaque">    </param>
    /// <returns></returns>
    public TheRealMonkeyKing Handler(string SunWukong, string SixEarMacaque)
    {
      Console.WriteLine("        ,               :    ");
      //     ,  NextHandler 
      return TheRealMonkeyKing.SunWukong;
      //        TheRealMonkeyKing.SixEarMacaque,
      //             ,       ,         。          。
      //              ,          ,          ,         。
      //                  ,          ,
      //                 ,               。
      //       。《   》     。
    }
    /// <summary>
    ///                 
    /// </summary>
    public IHandler NextHandler { get; set; }
  }
}

7.진위 판단 미 원숭이 왕 입구

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Com.Design.Gof.ChainOfResponsibility
{
  /// <summary>
  ///          
  /// </summary>
  public class JudgementTheKingOfMonkey
  {
    //       ,   
    public IHandler GuangYinBodhisattva { get; set; }
    public IHandler LiTianWang { get; set; }
    public IHandler TangSeng { get; set; }
    public IHandler YanLuoDianDiTing { get; set; }
    public IHandler RuLai { get; set; }
    /// <summary>
    ///        ,         
    /// </summary>
    /// <returns></returns>
    public TheRealMonkeyKing Judge(string SunWuKong,string SixEarMacaque) {
     return GuangYinBodhisattva.Handler(SunWuKong, SixEarMacaque);
    }
  }
}

8.다음은 주 함수 테스트

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Com.Design.Gof.Observer;
using Com.Design.Gof.ChainOfResponsibility;
namespace Com.Design.Gof.Test
{
  class Program
  {
    static void Main(string[] args)
    {
      #region ChainOfResponsibility
      //       ,        new  ,        
      JudgementTheKingOfMonkey judgement = new JudgementTheKingOfMonkey
      {
        GuangYinBodhisattva = new GuangYinBodhisattva(),//    
        LiTianWang = new LiTianWang(),//     
        TangSeng = new TangSeng(),//  
        YanLuoDianDiTing = new YanLuoDianDiTing(),//     
        RuLai = new RuLai()//    
      };
      //            ,           
      //    -->     -->  -->     -->    
      judgement.GuangYinBodhisattva.NextHandler = judgement.LiTianWang;
      judgement.LiTianWang.NextHandler = judgement.TangSeng;
      judgement.TangSeng.NextHandler = judgement.YanLuoDianDiTing;
      judgement.YanLuoDianDiTing.NextHandler = judgement.RuLai;
      //      
      string SunWuKong = "SunWuKong", SixEarMacaque = "SixEarMacaque";
      //         
      TheRealMonkeyKing RealMonkeyKing = judgement.Judge(SunWuKong, SixEarMacaque);
      Console.WriteLine();
      Console.WriteLine("Then,       :" + RealMonkeyKing + "   ");
      #endregion
      Console.ReadKey();
    }
  }
}

9.실행 결과

첨부:전체 인 스 턴 스 코드 는 여 기 를 클릭 하 십시오본 사이트 다운로드
더 많은 C\#관련 내용 은 본 사이트 의 주 제 를 볼 수 있다.,,,,,,
본 고 에서 말 한 것 이 여러분 의 C\#프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기