首页 > 其他分享 >3、模板方法模式

3、模板方法模式

时间:2024-10-22 10:48:01浏览次数:7  
标签:Console Step1 void 模式 protected WriteLine override 方法 模板

一、模板方法模式,简单的说就是在一个上层的抽象类中,定义了一些操作的抽象方法,有一个总体的方法组织了怎么去调用这个操作方法,而操作方法的具体实现由子类去实现,达到抽取公共部分放在父类模板中,子实现各自己不对的部分

public abstract class AbstractTemplate
{
    protected virtual void Init()
    {
        Console.WriteLine("init data");
    }
    protected abstract void Step1();
    protected abstract void Step2();
    protected abstract void Step3();
    protected virtual void Save()
    {
        Console.WriteLine("Save Data");
    }

    public void Run()
    {
        Init();
        Step1();
        Step2();
        Step3();
        Save();
    }
}

public class DoA : AbstractTemplate
{
    protected override void Init()
    {
        Console.WriteLine("DoA init data");
        base.Init();
    }
    protected override void Step1()
    {
        Console.WriteLine("DoA Step1");
    }

    protected override void Step2()
    {
        Console.WriteLine("DoA Step2");
    }

    protected override void Step3()
    {
        Console.WriteLine("DoA Step3");
    }
}

public class DoB : AbstractTemplate
{
    protected override void Step1()
    {
        Console.WriteLine("DoB Step1");
    }

    protected override void Step2()
    {
        Console.WriteLine("DoB Step2");
    }

    protected override void Step3()
    {
        Console.WriteLine("DoB Step3");
    }

    protected override void Save()
    {
        Console.WriteLine("DoB Save data");
    }
}

 

标签:Console,Step1,void,模式,protected,WriteLine,override,方法,模板
From: https://www.cnblogs.com/ljx2012/p/18492132

相关文章

  • 11种经典时间序列预测方法:理论、Python实现与应用
    时间序列分析和预测在现代数据科学中扮演着关键角色,广泛应用于金融、经济、气象学和工程等领域。本文将总结11种经典的时间序列预测方法,并提供它们在Python中的实现示例。这些方法包括:自回归(AR)移动平均(MA)自回归移动平均(ARMA)自回归积分移动平均(ARIMA)季节性自回归积分......
  • 保研推荐信模板
    尊敬的xx大学xx学院领导,您好!我是xx大学xx学院的xxx,是xx同学《xx》课程的授课老师。很高兴作为推荐人向贵单位推荐xx攻读硕士学位。xx是转专业过来的,此前我并不认识他,但这个每次上课坐在前排正对着讲台的男孩给了我很深的印象。在我眼里,他是那种善于发现问题并解决问题的人,经......
  • PbootCMS缓存如何清理runtime文件夹下经常满怎么办?清理缓存的方法
    方式一:通过后台清理缓存登录后台:打开浏览器,输入你的PbootCMS后台地址,登录后台管理系统。清理缓存:登录后,在右上角找到“清理缓存”按钮,点击即可自动清理所有缓存文件。方式二:通过FTP或服务器直接删除runtime文件夹下的所有文件连接FTP服务器:使用FTP客户端(如Fil......
  • PbootCMS网站怎么修改HTML模板文件
    修改HTML文件连接FTP服务器:使用FTP客户端连接到你的服务器。定位模板文件夹:导航到 /template/你的模板名称/ 目录。找到需要修改的HTML文件。编辑HTML文件:下载需要修改的HTML文件到本地。使用文本编辑器打开并修改HTML文件。例如,修改某个段落的文本:html......
  • Elasticsearch应用与源码的学习方法是什么?
    学习Elasticsearch的应用与源码,可以按照以下步骤进行:入门基础:首先,可以通过官方文档或一些入门教程来了解Elasticsearch的基本概念和功能。例如,可以参考《Elasticsearch入门教程》 和《ElasticSearch入门篇(保姆级教程)-coderxz-博客园》。这些资源会介绍Elasticsearch的......
  • 求一个无符号整数二进制形式中1的个数(三种方法)
    题目:输入一个整数,输出这个整数二进制形式中1的个数。例如:输入:115输出:5解题思路:方法一:关键代码:i=i&(i-1),统计i二进制中有多少个1 具体是如何实现的,实际推几步就可以看出规律。例如2017的二进制形式为11111100001第一步,11111100001&11111100000=11111100000 ......
  • 线性基相关模板
    [ABC236F]Spices有\(2^N-1\)个数字,分别编号为\(1,2,\dots,2^N-1\),想获得编号为\(i\)的数字需要支付\(c_i\)的代价。现在你可以从这些数字中选出一些数,使得你可以通过你选择的某些数的编号的异或和来表示出\([1,2^N-1]\)中的所有数。请你求出最少需要......
  • 图论模板
    最短路(dijkstra)无法处理负边权,时间复杂度O(mlogn)#include<bits/stdc++.h>#definefo(i,a,b)for(ll(i)=(a);(i)<=(b);(i)++)#definefd(i,b,a)for(ll(i)=(b);(i)>=(a);(i)--)#definelc(o<<1)#definerc((o<<1)|1)#definemk(x,y)make_pair((x),(......
  • Spring Boot 发送qq邮箱的步骤和方法
    先去qq邮箱开启POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,设置服务授权码邮箱==>账号==>管理服务==>开启服务==>生成授权码然后我们导入邮箱依赖<!--邮件发送依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-sta......
  • 公司网站后台修改模板?php修改网站后台?
    备份现有模板在进行任何修改之前,确保备份现有的模板文件。这可以防止在修改过程中出现错误导致数据丢失。使用FTP工具或通过服务器管理面板复制模板文件到本地或另一个安全位置。确定需要修改的内容明确你需要修改的具体内容,比如布局调整、颜色更改、添加新功能等。列......