zoukankan      html  css  js  c++  java
  • 结合项目实例 回顾传统设计模式(八)模板方法模式

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

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

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

    /// <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;
            }
          

        }

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

    原创作品允许转载,转载时请务必以超链接形式标明文章原始出处以及作者信息。
    作者:熬夜的虫子
    点击查看:博文索引
  • 相关阅读:
    查看Android应用所需权限(uses-permission)
    Android Camera后台拍照
    傅里叶变换
    linux文件系统问题:wrong fs type, bad option, bad superblock
    H3 android 系统编译
    开源股票数据工具
    获取股票实时交易数据的方法
    获取历史和实时股票数据接口
    CRC在线计算工具
    硬盘自动挂载
  • 原文地址:https://www.cnblogs.com/dubing/p/2199945.html
Copyright © 2011-2022 走看看