一,我们为什么需要模板设计模式?

在程序设计中,可能每个对象都有共同的地方,而此时如果每个对象定义一次,如下例子,每个对象都写Stay()方法,这样在每个类中都有很多相同的代码,此时,我们需要用到模板设计模式,来解决这个问题

二,模板设计模式思路:是把相同的部分抽象出来到抽象类中去定义,具体子类来继承抽象类,并实现抽象类中的抽象方法,从而达到具体实现的不同部分,这个思路也正式模板方法的实现精髓所在

三,如下例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace _13.模板方法模式
{
//模板设计模式
//在程序设计中,可能每个对象都有共同的地方,而此时如果每个对象定义一次,如下,每个对象都写Stay方法,这样在每个类中都有很多相同的代码
//此时,我们需要用到模板设计模式,来解决这个问题
//模板设计模式思路:是把相同的部分抽象出来到抽象类中去定义,具体子类来继承抽象类,并实现抽象类中的抽象方法,从而达到具体实现的不同部分,这个思路也正式模板方法的实现精髓所在
class Program
{
static void Main(string[] args)
{
People p = new Chinese();
People p2 = new English();
}
}
public abstract class People
{
public People()
{
Stay();
Console.WriteLine("我们是人类");
Country();
Say();
} protected void Stay()
{
Console.WriteLine("我住在地球");
} public abstract void Country(); public abstract void Say();
}
public class Chinese : People
{
public override void Country()
{
Console.WriteLine("我是中国人");
}
public override void Say()
{
Console.WriteLine("我们说中文");
}
}
public class English : People
{
public override void Country()
{
Console.WriteLine("We are English");
}
public override void Say()
{
Console.WriteLine("We speak English");
}
}
}

三,我们将共用定义为protected,这样只有继承时才可以调用这个共用模板代码

C#设计模式:模板方法模式(Template Method)的更多相关文章

  1. 设计模式 - 模板方法模式(template method pattern) JFrame 具体解释

    模板方法模式(template method pattern) JFrame 具体解释 本文地址: http://blog.csdn.net/caroline_wendy 參考模板方法模式(templ ...

  2. 设计模式 - 模板方法模式(template method pattern) 排序(sort) 具体解释

    模板方法模式(template method pattern) 排序(sort) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy 參考模板方法模式(tem ...

  3. 设计模式 - 模板方法模式(template method pattern) 具体解释

    模板方法模式(template method pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 模板方法模式(template metho ...

  4. java设计模式 模板方法模式Template Method

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性.毫无疑问,设计模式于己 ...

  5. C#设计模式-模板方法模式(Template Method)

    概念 模板指一些可以套用的公共内容,例如网页模板是当网站中有许多页面版式色彩相同的情况下,将其定义为网页模板,并定义其中部分可编辑,部分不可编辑,那么在利用网页模板制作其他页面时就会很方便,不易出错. ...

  6. 设计模式 ( 十九 ) 模板方法模式Template method(类行为型)

      设计模式 ( 十九 ) 模板方法模式Template method(类行为型) 1.概述 在面向对象开发过程中,通常我们会遇到这样的一个问题:我们知道一个算法所需的关键步骤,并确定了这些步骤的执行 ...

  7. 乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern)

    原文:乐在其中设计模式(C#) - 模板方法模式(Template Method Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 模板方法模式(Template Method ...

  8. 模板方法模式 Template method 行为型 设计模式(二十六)

    模板方法模式 Template method 上图为网上百度的一份简历模板截图   相信大家都有求职的经历,那么必然需要简历,写简历的时候,很可能你会网上检索一份简历模板,使用此模板的格式,然后替换为 ...

  9. 二十四种设计模式:模板方法模式(Template Method Pattern)

    模板方法模式(Template Method Pattern) 介绍定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.Template Method使得子类可以不改变一个算法的结构即可重定义该算法 ...

  10. 模板方法模式(Template Method Pattern)——复杂流程步骤的设计

    模式概述 在现实生活中,很多事情都包含几个实现步骤,例如请客吃饭,无论吃什么,一般都包含点单.吃东西.买单等几个步骤,通常情况下这几个步骤的次序是:点单 --> 吃东西 --> 买单. 在 ...

随机推荐

  1. vuex配置

    import Vue from 'vue' import App from './App.vue' import router from './router' import store from '. ...

  2. 20180315-Python面向对象编程设计和开发

    1.在子类中调用父类的方法 在子类派生出的新方法中,往往需要重用父类的方法,我们有两种实现方式: 方式一:父类名.父类方法() Animal.__init__(self,name) 方式二:super ...

  3. [置顶]unity常用开发套件

    维京人骨骼动画制作(Unity 2D Animation资源包使用指南) 维京人骨骼动画制作2(Unity 2D IK资源包使用指南) -------------------------------- ...

  4. 录制rtsp音视频

    1.使用ffmpeg来录制rtsp视频 视频 ffmpeg -y -i rtsp://172.16.23.66:554/h264major -vcodec copy -f mp4 record.mp4 ...

  5. 搭建个人使用服务器-vultr

    内容来自https://www.noobyy.com/31.html  谢谢教程,侵权的话会立即删除! 1. 首先进入Vultr官网注册:https://www.vultr.com 注册完开始充值,我 ...

  6. BZOJ1076/Luogu2473 奖励关(SCOI2008)状压DP+期望DP

    题意:给n(n<=15)种宝物宝物有价值w且每个宝物有一个前置宝物(即你必须先吃过它的所有前置宝物至少一次才能吃该宝物),共有m轮游戏,每一轮会在n种宝物等概率选一个出来,因为宝物价值可正可负你 ...

  7. [SCOI2003]字符串折叠(区间dp)

    P4302 [SCOI2003]字符串折叠 题目描述 折叠的定义如下: 一个字符串可以看成它自身的折叠.记作S = S X(S)是X(X>1)个S连接在一起的串的折叠.记作X(S) = SSSS ...

  8. mysql的锁

    前言 mysql锁的概念参考如下连接: 1.http://blog.csdn.net/u013063153/article/details/53432468 2.http://www.yesky.co ...

  9. ElasticSearch java api -单例模式

    //单例模式 private static Settings getSettingInstance(){ if(settings==null){ synchronized (Settings.clas ...

  10. ivew-admin 校验 自定义验证表单多层嵌套

    1.prop=对象 <FormItem label=" prop="shapeDifference.heightSpaceT2"> <Input v-m ...