C#模板设计模式

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

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

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

三,如下例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TemplateDesign2
{
    //模板设计模式
    //在程序设计中,可能每个对象都有共同的地方,而此时如果每个对象定义一次,如下,每个对象都写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();
        }

        public 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");
        }
    }
}
时间: 2024-11-04 15:57:32

C#模板设计模式的相关文章

模板设计模式

模板设计模式概述 模板方法模式就是定义一个算法的骨架,而将具体的算法延迟到子类中来实现 优点 使用模板方法模式,在定义算法骨架的同时,可以很灵活的实现具体的算法,满足用户灵活多变的需求 缺点 如果算法骨架有修改的话,则需要修改抽象类 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStr

实际开发中的模板设计模式

最近的项目中,在使用spring+springJBDC 开发时,从一开始的一脸懵逼到越来越顺手,着一切,都归功于一大堆的封装方法.在这里,记录两个非常有用方法以便查阅学习 一. 组合查询的基础类(BaseCondition) 该类中,抽取了常用的组合查询的公共属性和方法,例如:分页查询中使用的 pagaSize// 页大小.pageNumber// 当前页码.rowCount;// 记录总数 rowCount;// 记录总数 拼接sql语句使用的多个重载add()方法,更据不同数据类型重载; 最

Java设计模式之模板方法模式或者说模板设计模式(属于行为型)

抽象类,不变的代码写了,要变化的部分留给子类去实现: package 行为型_模板方法模式; //模板设计模式的意思是把不变定位部分写出来,变化的部分留给子类去实现 public abstract class GetTime { public long getTime() throws Exception{ long start = System.currentTimeMillis();//开始时间 /* //for循环 for(int i=0;i<10000;i++){ System.out.

十三、模板设计模式

/* 模板设计模式:实现一个功能时,功能的一部分是确定的,一部分是不确定的,确定的部分还会用到 不确定的部分,那么就把不确定的部分暴露出去,让子类去实现 实现计算一个程序的运行时间: 记录一个开始时间和一个结束时间,两个时间相减就是运行时间 */ abstract class CalTime { public final void runTime() { //记录开始时间 long start=System.currentTimeMillis(); fun(); //记录结束时间 long en

黑马程序员-模板设计模式-获取程序的运行时间!

package com.qumibao.www; //获取一段程序的运行时间. /* 思路: 1.定义一个获取时间的抽象类 2.定义一个子类集成该抽象类. 2.定义一个方法.只需获取该程序的开始时间与结束时间并相减即可,由于时间长度不确定,用long类型来定义变量. 3.获取当前时间API中提供了System中的相关方法. System.currentTimeMills(); */ abstract class GetTime{ public void getTime(){ long start

Java 设计模式 ------ 模板设计模式

模板设计模式主要来源于生活中有一些事情是有模板可以遵循的.举两个生活中的例子,如泡茶和泡咖啡,看一看. 泡茶有以下四个步骤:  1, 烧开水;  2 把茶放到水杯中; 3,倒入开水; 4, 加糖. 泡咖啡也同样有以下四个步骤: 1, 烧开水;  2 把咖啡放到水杯中; 3,倒入开水; 4, 加入糖和牛奶. 这时,可以清楚地发现,无论是泡茶还是泡咖啡,它们的步骤几乎是相同的:1,开水, 2 放入水杯,3 倒入开水,4 加调味剂.只有具体到泡某种饮料时,它们有些步骤才不同,泡茶肯定是要把茶放到水杯中

C#模板设计模式使用和学习心得

模板设计模式: 模版方法模式由一个抽象类和一个(或一组)实现类通过继承结构组成,抽象类中的方法分为三种: 抽象方法:父类中只声明但不加以实现,而是定义好规范,然后由它的子类去实现. 模版方法:由抽象类声明并加以实现.一般来说,模版方法调用抽象方法来完成主要的逻辑功能,并且,模版方法大多会定义为final类型,指明主要的逻辑功能在子类中不能被重写. 钩子方法:由抽象类声明并加以实现.但是子类可以去扩展,子类可以通过扩展钩子方法来影响模版方法的逻辑. 抽象类的任务是搭建逻辑的框架,通常由经验丰富的人

二、 抽象类延伸出的模板设计模式

具体可参考:https://www.cnblogs.com/java-my-life/archive/2012/05/14/2495235.html 模板设计模式的关键:子类可以置换掉父类的可变部分,但是子类却不可以改变模板方法所代表的顶级逻辑 示例: public abstract class AbstractTemplate { /** * 模板方法 */ public void templateMethod() { // 调用基本方法 abstractMethod(); hookMetho

Template Method 模板设计模式

什么是模板设计模式 对于不了解的模板设计模式的来说,可以认为如同古代的造纸术一样,纸所以成型,取决于用了模板的形状,形状又由镂空的木板组成,而你想要造什么纸,又取决于你使用什么材料. 上面提到了两个关键点 <> <> 定义: 如同我们在父类中定义处理流程的框架,而在子类中实现具体处理的模板称之为template method 模板设计模式 具体到面向对象 <> 在对象中我们描述为 抽象类: 定义过程pdl <> 在对象中我们描述为 具体行为的子类: UML