行为型设计模式之模板方法(Template Method)
2024-09-28 20:53:24
结构 | |
意图 | 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Te m p l a t e M e t h o d 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 |
适用性 |
|
using System; class Algorithm
{
public void DoAlgorithm()
{
Console.WriteLine("In DoAlgorithm"); // do some part of the algorithm here // step1 goes here
Console.WriteLine("In Algorithm - DoAlgoStep1");
// . . . // step 2 goes here
Console.WriteLine("In Algorithm - DoAlgoStep2");
// . . . // Now call configurable/replacable part
DoAlgoStep3(); // step 4 goes here
Console.WriteLine("In Algorithm - DoAlgoStep4");
// . . . // Now call next configurable part
DoAlgoStep5();
} virtual public void DoAlgoStep3()
{
Console.WriteLine("In Algorithm - DoAlgoStep3");
} virtual public void DoAlgoStep5()
{
Console.WriteLine("In Algorithm - DoAlgoStep5");
}
} class CustomAlgorithm : Algorithm
{
public override void DoAlgoStep3()
{
Console.WriteLine("In CustomAlgorithm - DoAlgoStep3");
} public override void DoAlgoStep5()
{
Console.WriteLine("In CustomAlgorithm - DoAlgoStep5");
}
} /// <summary>
/// Summary description for Client.
/// </summary>
public class Client
{
public static int Main(string[] args)
{
CustomAlgorithm c = new CustomAlgorithm(); c.DoAlgorithm(); return ;
}
}
模板方法
最新文章
- [AlwaysOn Availability Groups]排查:AG超过RPO
- Spark分析笔记
- 10个出色的NoSQL数据库
- Unity3D的杂记
- GUI_DOWNLOAD参数说明
- Eclipse查看历史代码
- FZU 2237 中位数 主席树 树上k大
- PL/SQL Developer 远程连接Oracle数据库
- [Session] SessionHelper2---C#关于Session高级操作帮助类 (转载)
- 【python学习笔记01】python的数据类型
- English - when用法
- iOS开发之理解iOS中的MVC设计模式
- web 前端routine
- 洛谷 P3871 [TJOI2010]中位数 解题报告
- jquery获取具有多个类class的标签内容
- IOS_多线程
- mac Intellij Idea Tmocat 启动报 Error running Tomcat: /conf/Catalina
- Linux下搭建Hadoop集群(Centos7.0)
- RFQ 、IFB、RFP 、RFI的区别是什么
- java设计模式-----16、解释器模式