[기계실 재 구성] 직책 체인 모델 로 기계 소비 시간 계산 문 제 를 해결 합 니 다.

디자인 모델 은 이전에 두 번 배 웠 다. 특히 소프트웨어 시험 을 볼 때 블 로 거들 은 십 여 개의 디자인 모델 을 진지 하 게 이해 한 셈 이다. 많 지 는 않 지만 현 재 는 충분 하 다.그러나 이것들 은 모두 이론 단계 만 존재 하고 실전 응용 은 아직 없다.그러나 최근 블 로 거들 은 기관실 유 료 시스템 을 개발 할 때 학생 들 이 컴퓨터 에서 내 려 소비 시간 을 계산 하 는 것 이 직책 체인 모델 과 비슷 하 다 는 것 을 발견 하고 직책 체인 모델 을 추가 했다. 마지막 으로 결 과 는 나 에 게 괜찮다 고 말 했다.
우선 직책 체인 모델 이 무엇 인지 되 돌아 볼 까요?
직책 체인 모델: 여러 대상 이 요 구 를 처리 할 수 있 도록 요청 한 발송 자 와 수신 자 간 의 결합 관 계 를 피한다.이 대상 을 하나의 체인 으로 연결 하고 이 체인 을 따라 이 요 구 를 전달 하면 한 대상 이 그것 을 처리 할 때 까지 알 수 있다.
이 정의 에 따 르 면 나 는 학생 들 이 비행기 에서 내 리 는 과정 을 연상 시 켰 다.학생 들 이 탑승 시간 이 적어도 탑승 시간 이 라면 요금 계산 기준 에 따라 요금 을 받는다.그래서 직책 체인 모델 이 해결 하 는 문 제 는 소비 시간 이 어느 시간 대 에 속 하 는 지 확인 하 는 것 이다.자, 이런 생각 이 들 면 코드 를 실현 하기 시작 합 니 다.
제 직책 체인 모델 의 코드 는 업무 논리 층 (BLL) 에서 작 성 된 것 으로 호출 이 편리 합 니 다.
        //      
        public abstract class Handler
        {
            protected Handler successor;
            public void SetSuccessor(Handler successor) //     
            {
                this.successor = successor;
            }
            //         
            public abstract void HandlerRequest(BasicData_Info basicData,Line_Info line);
        }        
        //            ,        
        public class leastTimeHandler:Handler
        {
            public override void HandlerRequest(BasicData_Info basicData,Line_Info line)
            {
                if (Convert.ToInt32(line.ConsumeTime) > Convert.ToInt32(basicData.LeastTime))
                {
                    line.ConsumeTime = line.ConsumeTime;
                }
                else if(successor!=null)
                {
                    successor.HandlerRequest(basicData,line);
                }
            }
        }            

외관 층 (Facade) 에 직책 체인 을 설치 한 상하 상속 자.
	    public void ConsumeTime(BasicData_Info basicData, Line_Info line)
        {
            BLLOnline.prepareTimeHandler prepareTimeHandler = new BLLOnline.prepareTimeHandler();
            BLLOnline.leastTimeHandler leastTimeHandler = new BLLOnline.leastTimeHandler();

            //         
            leastTimeHandler.SetSuccessor(prepareTimeHandler);

            //            
            prepareTimeHandler.HandlerRequest(basicData,line);
        }

U 층 은 직책 체인 모드 를 사용 하여 소비 시간 을 계산한다.
//       
FacadeOnline facadePrepareTime = new FacadeOnline();
facadePrepareTime.ConsumeTime(basicdataSet, line);

직책 체인 모델 을 잘 알 고 자 이언 트 의 어깨 위 에 서면 이 문제 가 잘 해결 되 었 다 는 것 을 알 수 있다.

좋은 웹페이지 즐겨찾기