当你去银行取钱时翻译设计模板,银行会给你一张取款单。此提款表是一个模板。它将公共内容提取到模板中,只留下一部分供用户填写。 在软件系统中,将多个类的公共内容提取到模板中的思想就是模板方法的思想图案。
模板方法模式是一种基于继承的代码复用的基本技术。在模板方法模式中,相同的代码可以放在父类中,不同的方法实现可以放在不同的子类中。
1.1,定义
定义运行中算法的框架并将这些步骤推迟到子类中。模板方法模式允许子类在不改变算法结构的情况下重新定义算法的某些特定步骤。
1.2、使用频率
中等的
2、模板方法模式结构
2.1、结构图
2.2, 参与者
程序.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调用的虚方法可以有实现也可以没有实现(抽象方法或虚方法)。但一般建议将它们设置为受保护的方法,以便只有子类可以访问它们。
◊ 模板方法模式通过扩展子类来增加新的行为,符合“开闭原则”。
参考资料
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。