结合项目实例 回顾传统设计模式(八)模板方法模式

模板方法定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现。

普通的设计算法由实现类直接控制,在很多功能类似的对象中存在重复。并且由于类的组织方式不具有弹性,所以往往新加入新的相似模块时需要作大量冗余的步骤。

我们还是那电商的订单提交来说事 ~ ~

 

///   <summary>
    
///  模板类
    
///   </summary>
     public  abstract  class OrderSubmit
    {
         public OrderSubmit()
        {
             // 检查购物车
            CheckCart();
             // 检查支付方式
            CheckPaytype();
             // 检查用户地址
            CheckAddress();
             // 提交订单
            SubmitOrderInfo();
             // 钩子 根据子类是否需要来实现
             if (hookflag())
            {
                 // 生成发票
                CreateInvoice();
            }

        }
         public  abstract  void CheckCart();
         public  abstract  void CheckPaytype();
         public  void CreateInvoice()
        {
             // 生成发票具体方法
        }
         public  void CheckAddress()
        {
             // 用户地址检查
        }
      
         public  void SubmitOrderInfo()
        {
             // 订单提交详细
        }
         public  bool hookflag()
        {
             return  true;
        }

    }

     ///   <summary>
    
///  主站订单提交
    
///   </summary>
     public  class webOrderSubmit : OrderSubmit
    {
         public  override  void CheckCart()
        {
             // 检查属于网站的购物车信息
        }
         public  override  void CheckPaytype()
        {
             // 检查属于网站的支付方式
        }
         public   void CreateInvoice()
        {
             // 生成发票
        }
      
 
    }

     ///   <summary>
    
///  移动终端订单提交
    
///   </summary>
     public  class MoblieOrderSubmit : OrderSubmit
    {
         public  override  void CheckCart()
        {
             // 检查属于移动终端的购物车信息
        }
         public  override  void CheckPaytype()
        {
             // 检查属于动终端的支付方式
        }
         // 不要发票
         public  bool hookflag()
        {
             return  false;
        }
      

    }

总结:模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。和其他模式相比,模板方法由子类决定如何实现算法中得步骤;策略模式则是封装可互换的行为,然后使用委托来决定要采用哪一个行为;工厂模式由子类决定实例化哪个具体类。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值