模版模式(Template)

本文介绍了模版方法模式的基本概念及应用场景,通过对比策略模式,突出其特点。模版方法模式将固定流程封装,允许子类自定义部分细节,同时隐藏了流程的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模版模式,又被称为模版方法模式,它可以将工作流程进行封装,并且对外提供了个性化的控制,但主流程外界不能修改,也就是说,模版方法模式中,将工作的主体架构规定好,具体类可以根据自己的需要,各自去实现,这可能会让我们想到策略模式,两者有着本质的区别。

何时能用到它?

我们看一下策略模式的应用场景

1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。
2、 需要在不同情况下使用不同的策略(算法),一般会定义一个接口规范,使用不同的策略方式去实现它
3、 对客户隐藏具体策略(算法)的实现细节,彼此完全独立。
而模版方法模式的应用场景
1、多个类区别在于主流程中的某个细节
2、客户可以自已实现模版里的抽象方法
3、对客户隐藏具体的实现流程(方法的组合的顺序)

模版模式的结构图

 

模版模式实现说明

OrderGenerator:模版模式基类,实现了某种业务的完整流程,其中一些核心方法已经实现,一些个性化方法被声明为抽象方法,让子类去实现。
B2COrderGenerator:B2C业务中去实现抽象方法

C2COrderGenerator:C2C业务中去实现抽象方法

复制代码
///<summary>/// 模版核心类
    ///</summary>abstractclass OrderGenerator
    {
        ///<summary>/// 核心处理流程
        ///</summary>publicvoid Excute()
        {
            InsertData();
            ProcessException();
            InsertLog();
        }
        void InsertData()
        {
            Console.WriteLine("写数据对外面隐藏");
        }
        void InsertLog()
        {
            Console.WriteLine("写日志对外面隐藏");
        }
        ///<summary>/// 异常处理逻辑,对外面开放,可以自己建立自己的异常规范
        ///</summary>protectedabstractvoid ProcessException();
    }

    ///<summary>/// b2c项目业务处理方法
    ///</summary>class B2COrderGenerator : OrderGenerator
    {
        protectedoverridevoid ProcessException()
        {
            Console.WriteLine("b2c项目中订单的异常处理方式");
        }
    }
    ///<summary>/// c2c项目业务处理方法
    ///</summary>class C2COrderGenerator : OrderGenerator
    {
        protectedoverridevoid ProcessException()
        {
            Console.WriteLine("c2c项目中订单的异常处理方法");
        }
    }
复制代码

调用方法

#region 模版方法调用
            OrderGenerator orderGenerator = new B2COrderGenerator();
            orderGenerator.Excute();
            #endregion


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值