说说设计模式~ 模版模式(Template)

简介:

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

何时能用到它?

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

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

模版模式的结构图

 

模版模式实现说明

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

模版模式的C#实现

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

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

调用方法

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

程序截图

本文转自博客园张占岭(仓储大叔)的博客,原文链接:说说设计模式~ 模版模式(Template),如需转载请自行联系原博主。

目录
相关文章
|
5天前
|
设计模式 算法 安全
设计模式——模板模式
模板方法模式、钩子方法、Spring源码AbstractApplicationContext类用到的模板方法
设计模式——模板模式
|
1月前
|
设计模式
设计模式-单一职责模式
设计模式-单一职责模式
|
1月前
|
设计模式 XML 存储
【二】设计模式~~~创建型模式~~~工厂方法模式(Java)
文章详细介绍了工厂方法模式(Factory Method Pattern),这是一种创建型设计模式,用于将对象的创建过程委托给多个工厂子类中的某一个,以实现对象创建的封装和扩展性。文章通过日志记录器的实例,展示了工厂方法模式的结构、角色、时序图、代码实现、优点、缺点以及适用环境,并探讨了如何通过配置文件和Java反射机制实现工厂的动态创建。
【二】设计模式~~~创建型模式~~~工厂方法模式(Java)
|
1月前
|
设计模式 XML Java
【一】设计模式~~~创建型模式~~~简单工厂模式(Java)
文章详细介绍了简单工厂模式(Simple Factory Pattern),这是一种创建型设计模式,用于根据输入参数的不同返回不同类的实例,而客户端不需要知道具体类名。文章通过图表类的实例,展示了简单工厂模式的结构、时序图、代码实现、优缺点以及适用环境,并提供了Java代码示例和扩展应用,如通过配置文件读取参数来实现对象的创建。
【一】设计模式~~~创建型模式~~~简单工厂模式(Java)
|
1月前
|
设计模式 uml C语言
设计模式----------工厂模式之简单工厂模式(创建型)
这篇文章详细介绍了简单工厂模式,包括其定义、应用场景、UML类图、通用代码实现、运行结果、实际应用例子,以及如何通过反射机制实现对象创建,从而提高代码的扩展性和维护性。
设计模式----------工厂模式之简单工厂模式(创建型)
|
1月前
|
设计模式 uml
设计模式-------------工厂模式之工厂方法模式(创建型)
工厂方法模式是一种创建型设计模式,它通过定义一个用于创建对象的接口,让子类决定实例化哪一个类,从而实现类的实例化推迟到子类中进行,提高了系统的灵活性和可扩展性。
|
1月前
|
设计模式 测试技术 Go
[设计模式]创建型模式-简单工厂模式
[设计模式]创建型模式-简单工厂模式
|
1月前
|
设计模式 人工智能 达摩院
设计模式的基础问题之模板模式在软件开发中的优势是什么
设计模式的基础问题之模板模式在软件开发中的优势是什么
|
1月前
|
设计模式 项目管理
设计模式的基础问题之生成器模式在项目管理应用的问题如何解决
设计模式的基础问题之生成器模式在项目管理应用的问题如何解决
|
1月前
|
设计模式 Java API
设计模式-------------静态/动态代理模式(结构型设计模式)
本文详细介绍了代理模式,包括其定义、应用场景、UML类图、代码实现和实际例子,阐述了静态代理和动态代理的区别以及它们的优缺点,展示了如何通过代理模式来控制对目标对象的访问并增强其功能。