委托的实际应用场景

关于委托的介绍,有篇文章真的不错,从简单到复杂的演变

http://bbs.csdn.net/topics/310243288


 

 

单凡用到委托,其业务需求必定是有点复杂,希望通过设计模式将业务分离出来。一切的设计都是去区分业务共性和特性,把握住这一点,至少不会乱用模式了。

 

一般对于订单的处理都会出现以下代码:

 

   public  class Service1
    {


       public static void SaveOrder(int type)
       {
           
           //order.AddOrder 添加订单
           //order.AddCashLog
           if (type==1)
           {
               //hotel.addhotelInfo  
           }
           else if (type==2)
           {
               //ticket.addticketInfo
           }
           {
               //...
           }

       }
    }

 

良好的编码习惯就是要消灭if else ,降低阅读复杂度。

然后会出现以下重构:

   public class Service2
   {


       public static void SaveHotelOrder()
       {

           //order.AddOrder 添加订单
           //order.AddCashLog
           //hotel.addhotelInfo  

       }
       public static void SaveTicketOrder()
       {

           //order.AddOrder 添加订单
           //order.AddCashLog
           //ticket.addticketInfo 
       }
   }

 

然后第三步优化就看你对service的定义了,我对service的定义是传递数据,只做数据对象vo的拆解和组装。业务由BIZ层承担。(当然这不是绝对的,任何架构在业务面前都得低头!)

所以service层虽然负责任务明确,但赋值代码会很多,为了能让方法变得更简洁,做了以下调整。

   public class BaseService
   {


       public static void SaveOrder(Action action)
       {

           //order.AddOrder 添加订单
           //order.AddCashLog
           action();

       }
 
   }
   public class Service3 : BaseService
   {

       public static void SaveHotelOrder()
       {
           SaveOrder(hotel.addhotelInfo);
       }

       public static void SaveTicketOrder()
       {
           SaveOrder(hotel.addhotelInfo);
       }

   }
  

项目属于重构改造,由于生产项目无法分享,就写了伪代码,虽然简单,结合自身项目做个引导把。本意在于设计时考虑业务抽象,分离不同点进行特殊处理。

 

转载于:https://www.cnblogs.com/yuanhuaming/p/4449434.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值