翻译设计模板 C#设计模式系列:模板方法模式(Template Method)

日期:2023-03-11 12:39:36 / 人气: 471 / 发布者:成都翻译公司

在软件系统中,将多个类的共有内容提取到一个模板中的思想便是模板方法模式的思想。2、模板方法模式结构3、模板方法模式结构实现4、模板方法模式应用分析模板方法模式特点:

当你去银行取钱时翻译设计模板,银行会给你一张取款单。此提款表是一个模板。它将公共内容提取到模板中,只留下一部分供用户填写。 在软件系统中,将多个类的公共内容提取到模板中的思想就是模板方法的思想图案。

模板方法模式是一种基于继承的代码复用的基本技术。在模板方法模式中,相同的代码可以放在父类中,不同的方法实现可以放在不同的子类中。

在模板方法模式下,需要准备一个抽象类,以具体方法和具体构造函数的形式实现部分逻辑,然后声明一些抽象方法,让子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法。

1.1>,定义

定义运行中算法的框架并将这些步骤推迟到子类中。模板方法模式允许子类在不改变算法结构的情况下重新定义算法的某些特定步骤。

1.2>、使用频率

中等的

2、模板方法模式结构

2.1>、结构图

2.2>, 参与者

模板方法模式的参与者:

◊ AbstractClass:定义一个模板,其子类将重新定义 PrimitiveOperation1 和 PrimitiveOperation2 操作。

◊ ConcreteClass:实现PrimitiveOperation1和PrimitiveOperation2,完成算法中与具体子类(Client)相关的内容。

在模板方法模式下,AbstractClass中的TemplateMethod提供了一个标准模板翻译设计模板,其中包含两个方法,PrimitiveOperation1和PrimitiveOperation2。这两种方法的内容可以由Client根据自己的需要改写。

3、 模板方法模式结构实现

抽象类.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DesignPatterns.TemplateMethodPattern.Structural
{
    public abstract class AbstractClass
    {
        public abstract void PrimitiveOperation1();
        public abstract void PrimitiveOperation2();
        /// 
        /// The "Template method"
        /// 
        public void TemplateMethod()
        {
            PrimitiveOperation1();
            PrimitiveOperation2();
            Console.WriteLine("");
        }
    }
}

具体类A.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DesignPatterns.TemplateMethodPattern.Structural
{
    public class ConcreteClassA : AbstractClass
    {
        public override void PrimitiveOperation1()
        {
            Console.WriteLine("ConcreteClassA.PrimitiveOperation1()");
        }
        public override void PrimitiveOperation2()
        {
            Console.WriteLine("ConcreteClassA.PrimitiveOperation2()");
        }
    }
}

具体类B.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DesignPatterns.TemplateMethodPattern.Structural
{
    public class ConcreteClassB : AbstractClass
    {
        public override void PrimitiveOperation1()
        {
            Console.WriteLine("ConcreteClassB.PrimitiveOperation1()");
        }
        public override void PrimitiveOperation2()
        {
            Console.WriteLine("ConcreteClassB.PrimitiveOperation2()");
        }
    }
}

程序.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DesignPatterns.TemplateMethodPattern.Structural;
namespace DesignPatterns.TemplateMethodPattern
{
    class Program
    {
        static void Main(string[] args)
        {
            AbstractClass aA = new ConcreteClassA();
            aA.TemplateMethod();
            AbstractClass aB = new ConcreteClassB();
            aB.TemplateMethod();
        }
    }
}

运行输出:

ConcreteClassA.PrimitiveOperation1()
ConcreteClassA.PrimitiveOperation2()
ConcreteClassB.PrimitiveOperation1()
ConcreteClassB.PrimitiveOperation2()
请按任意键继续. . .

4、模板方法模式的应用分析

模板方法模式的应用情况:

◊ 一次性实现算法的不变部分,将可变行为留给子类来实现。

◊ 应将每个子类中的共同行为提取出来并集中到一个共同的父类中,以避免代码重复。

◊ 控制子类扩展。模板方法只允许在特定点扩展,而模板部分是稳定的。

模板方法模式的特点:

◊ TemplateMethod 模式是一种非常基础的设计模式,在面向对象系统中被广泛使用。它使用*简洁的机制(基本、多态)为众多应用框架提供灵活的扩展点,是代码复用的基本实现结构。

◊ 在具体实现上,TemplateMethod调用的虚方法可以有实现也可以没有实现(抽象方法或虚方法)。但一般建议将它们设置为受保护的方法,以便只有子类可以访问它们。

◊ 模板方法模式通过扩展子类来增加新的行为,符合“开闭原则”。

相关阅读Relate

  • 法国签证营业执照翻译件模板 你与申根签证只有一条推送的距离
  • 江苏省增值税发票翻译模板 江苏税务局出口货物退(免)税申报管理系统软件
  • 肄业证书翻译模板 复旦大学学生学业证明文书管理细则(试行)
  • 四级英语作文模板带翻译 大学英语四级翻译模拟训练及答案
  • 社会某信用代码证翻译模板 js验证某社会信用代码,某社会信用代码 验证js,js+验证+社会信用代码证
  • 美国移民证件翻译模板 日语签证翻译聊聊身份证翻译模板
  • 翻译软件模板 人类史上*实用的的文档快速翻译指南
  • 江苏省增值税发票翻译模板 江苏出口货物退(免)税申报管理服务平台
  • 瑞士签证房产证翻译件模板 瑞士探亲签证—就读子女
  • 日语户口本翻译模板 户口本翻译价格_户口本翻译一般多少钱?
  • 翻译设计模板 C#设计模式系列:模板方法模式(Template Method) www.chinazxzy.com/fymb/5783.html
    
    本站部分内容和图片来源于网络用户和读者投稿,不确定投稿用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的权利,请联系:chinazxzy@163.com,及时删除。
    Go To Top 回顶部
    • 扫一扫,微信在线