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


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

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

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

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

        }

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

    原创作品允许转载,转载时请务必以超链接形式标明文章原始出处以及作者信息。
    作者:熬夜的虫子
    点击查看:博文索引
  • 相关阅读:
    MySQL 查询树结构、循环查询、查看函数、视图、存储过程
    SpringBoot 部署:外置依赖包
    springboot集成docker实现自动化构建镜像说明
    Chrome谷歌浏览器常用快捷键、开发技巧
    Windows常用CMD命令
    Git 版本管理,与 SVN区别对比
    TensorFlow重新导入restore报错: OP_REQUIRES failed at save_restore_v2_ops.cc:184 : Not found: Key Variable not found in checkpoint
    MySQL字符集设置
    Hive 时间操作
    深度思考:如何规划你的职业生涯
  • 原文地址:https://www.cnblogs.com/dubing/p/2199945.html
Copyright © 2020-2023  润新知