템플릿 방법의 응용
그래서 자신의 업무에서 LogicHandler의 OrderLogicHandler 논리 처리 클래스에서 코드가 너무 길고 1000줄에 달하기 때문에 읽기가 불편하다고 생각했다.주로 증원 감원 주문서를 분리 처리하고 단일 처리의 절차가 똑같지만 각자의 내용이 다르기 때문에 코드를 읽는 데 편리하도록 코드 재정비를 하고 템플릿 방법 모델로 이를 정리했다.
처리 절차는 신고한 인원 자료를 검증하여 요구에 부합되는 주문을 받거나 생성 주문서를 보관하는 것이다.
///
///
/// /// /// /// /// public object SaveCutInsurance(OrderCutApiDto orderDto, out List<string> successList, out Dictionary<string, string> failList) { successList = new List<string>(); failList = new Dictionary<string, string>(); OrderApiHelper orderApiHelper = new OrderApiCutHelper(_orderDetailRep, _policyRep, _publicLogic, _mapper, _packageRep, _v_CustomerInfoRep);// orderApiHelper.ValidApply(orderDto, out successList, out failList); if (successList.Count() > 0) { OrderEntity order = orderApiHelper.GetOrder(orderDto, successList); _orderRep.Save(order); } return new { Success = successList, Fail = failList }; } /// /// /// /// /// /// /// /// public object SaveAddInsurance(OrderAddApiDto orderDto, out List<string> successList, out Dictionary<string, string> failList) { successList = new List<string>(); failList = new Dictionary<string, string>(); OrderApiHelper orderApiHelper = new OrderApiAddHelper(_orderDetailRep,_policyRep,_publicLogic,_mapper,_packageRep,_v_CustomerInfoRep);// orderApiHelper.ValidApply(orderDto,out successList,out failList); if (successList.Count() > 0) { OrderEntity order = orderApiHelper.GetOrder(orderDto, successList); _orderRep.Save(order); } return new { Success = successList, Fail = failList }; }
템플릿 클래스: OrderApiHelper. 계승된 하위 클래스에서 모두 사용되는 공통된 방법은 부모 클래스에 쓸 수 있고, 형식은 보호된 것으로 성명해야 한다. 이런 종류는 OrderApiCutHelper에서 다시 쓰는 방법에서 직접 호출할 수 있다.HasPackage(), IsIninsurance() 등의 방법
1 public abstract class OrderApiHelper
2 { 3 protected IQueryable customerList; 4 protected IPackageRepository _packageRep; 5 protected IV_CustomerInfoRepository _v_CustomerInfoRep; 6 protected IOrderDetailRepository _orderDetailRep; 7 protected IPublicLogicHandler _publicLogic; 8 protected IPolicyRepository _policyRep; 9 protected IMapper _mapper; 10 public OrderApiHelper(IOrderDetailRepository orderDetailRep, IPolicyRepository policyRep, IPublicLogicHandler publicLogic, IMapper mapper, IPackageRepository packageRep, IV_CustomerInfoRepository v_CustomerInfoRep) 11 { 12 _v_CustomerInfoRep = v_CustomerInfoRep; 13 _packageRep = packageRep; 14 _orderDetailRep = orderDetailRep; 15 _mapper = mapper; 16 _publicLogic = publicLogic; 17 _policyRep = policyRep; 18 customerList = _v_CustomerInfoRep.Entities; 19 } 20 21 /// 22 /// 23 /// 24 /// 25 /// 26 /// 27 /// 28 /// 29 public abstract void ValidApply(T orderDto,out List<string> successList,out Dictionary<string, string> failList); 30 31 public abstract OrderEntity GetOrder(T orderDto, List<string> successList); 32 33 /// 34 /// 35 /// 36 /// 37 /// 38 protected bool HasPackage(string packageNumber) 39 { 40 return _packageRep.Entities.Any(p => p.SerialNumber == packageNumber && p.State == true && p.PackageRefEntities.Count > 0); 41 } 42 43 /// 44 /// 45 /// 46 /// 47 /// 48 protected bool IsIninsurance(string idCard, string packageNumber) 49 { 50 51 var queryadd = _orderDetailRep.Entities.Where(o => o.IdCard == idCard 52 && o.PackageNumber == packageNumber 53 && o.OperationType == OperationTypeEnum. .ToString() 54 && o.Status == OrderDetailStatusEnum. .ToString() 55 ); 56 57 var querycut = _orderDetailRep.Entities.Where(o => o.IdCard == idCard 58 && o.PackageNumber == packageNumber 59 && o.OperationType == OperationTypeEnum. .ToString() 60 && o.Status == OrderDetailStatusEnum. .ToString() 61 ); 62 63 if (queryadd.Count() > querycut.Count()) 64 return true; 65 else 66 return false; 67 } 68 69 /// 70 /// 71 /// 72 /// 73 /// 74 protected bool HasPolicy(string packageNumber, DateTime effectiveTime) 75 { 76 var query = _packageRep.Get(p => p.SerialNumber == packageNumber).PackageRefEntities? 77 .Where(r => 78 r.ProductEntity.PolicyRefEntities.Count() > 0 79 && r.ProductEntity.PolicyRefEntities?.Where(p => 80 p.PolicyEntity.StartTime <= effectiveTime 81 && p.PolicyEntity.EndTime > effectiveTime).Count() > 0); 82 if (query.Count() > 0) 83 return true; 84 else 85 return false; 86 } 87 }
구체적인 하위 클래스: OrderApiCutHelper, OrderApiAddHelper는 OrderApiHelper를 계승하여 각자의 검증과 주문 생성 방법을 다시 쓴다.
1 public class OrderApiCutHelper : OrderApiHelper
2 {
3 4 public OrderApiCutHelper(IOrderDetailRepository orderDetailRep, IPolicyRepository policyRep, IPublicLogicHandler publicLogic, IMapper mapper, IPackageRepository packageRep, IV_CustomerInfoRepository v_CustomerInfoRep) : base(orderDetailRep, policyRep, publicLogic, mapper, packageRep, v_CustomerInfoRep) 5 { 6 } 7 8 public override OrderEntity GetOrder(OrderCutApiDto orderDto, List<string> successList) 9 { 10 } 11 12 /// 13 /// 14 /// 15 /// 16 /// 17 /// 18 /// 19 public override void ValidApply(OrderCutApiDto orderDto, out List<string> successList, out Dictionary<string, string> failList) 20 { 21 } 22 } 23 24 //OrderApiAddHelper
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.