博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模板方法模式
阅读量:6677 次
发布时间:2019-06-25

本文共 1297 字,大约阅读时间需要 4 分钟。

模板方法模式

 定义一个操作中算法的骨架,而将一些步骤延迟到子类中
 模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。
某个方法的实现需要多个步骤,其中有些步骤是固定的,而有些步骤并不固定,存在可变性。为了提高代码的复用性和系统的灵活性
可以使用一种称之为模板方法模式的设计模式来对这类情况进行设计
在这里插入图片描述
(1) AbstractClass(抽象类):在抽象类中定义了一系列基本操作(PrimitiveOperations),这些基本操作可以是具体的,也可以是抽象的,每一个基本操作对应算法的一个步骤,在其子类中可以重定义或实现这些步骤。同时,在抽象类中实现了一个模板方法(Template Method),用于定义一个算法的框架,模板方法不仅可以调用在抽象类中实现的基本方法,也可以调用在抽象类的子类中实现的基本方法,还可以调用其他对象中的方法。
(2) ConcreteClass(具体子类):它是抽象类的子类,用于实现在父类中声明的抽象基本操作以完成子类特定算法的步骤,也可以覆盖在父类中已经实现的具体基本操作。
在这里插入图片描述

class Program    {        static void Main(string[] args)        {            People people=new Nouth();            people.Eat();            Console.ReadKey();        }    }    public abstract class People    {        ///         /// 模板方法        ///         public void Eat()        {            Order();            EatSome();            Pay();        }        public void Order()        {            Console.WriteLine("点菜");        }        public virtual void EatSome() { }        public void Pay()        {            Console.WriteLine("付钱");        }           }    public class South:People    {        public override void EatSome()        {            Console.WriteLine("吃米");        }    }    public class Nouth : People    {        public override void EatSome()        {            Console.WriteLine("吃面");        }    }

转载地址:http://fcrxo.baihongyu.com/

你可能感兴趣的文章
CentOS7 搭建 zabbix-server 3.0.10
查看>>
Android四大基本组件介绍与生命周期
查看>>
Essential Grid for WPF
查看>>
python实现一个简单的dnspod api
查看>>
我是在工作?学习?混日子?
查看>>
内存管理初级基础--代码
查看>>
关于Android Force Close 出现的原因 以及解决方法
查看>>
linux tar、find命令运维实践
查看>>
查询oracle数据库编码
查看>>
分发系统-expect-批量同步文件、批量执行命令
查看>>
activiti相关配置
查看>>
poj(1458)(最长公共子序列)
查看>>
virtualbox增加硬盘
查看>>
Exchange 2010邮件收发信大小限制
查看>>
js闭包浅了解
查看>>
解决"win8"无法使用内置管理员账户打开
查看>>
ProxmoxVE 之 创建win10基础镜像模板
查看>>
yum
查看>>
JQuery 级联(ul仿select级联)
查看>>
Delphi 2009 中 TStrings 与 TStream 的增强
查看>>