GoF中定义:

“在一个操作方法中定义算法的流程,其中某些步骤由子类完成。

模板方法模式让子类在不变更原有算法流程的情况下,还能够重新定义其中的步骤”

每一次武器攻击目标时,都要按逻辑执行:

1.开火、枪口特效

2.子弹特效

3.武器特效

4.通知敌方被击中

而每一种武器(如:枪,炮)都要执行一遍相同顺序的逻辑

模板方法模式就是着手解决这个问题的

1.定义一个算法的流程,即是很明确地定义算法的每一个步骤,并写在父类的方法中,而每一个步骤都可以是一个方法的调用

2.某些步骤由子类完成,不同子类的特性计算在此实现

//TemplateMethod.cs
public abstract class AbstractClass {
public void TemplateMethod() {
PrimitiveOperation1();
PrimitiveOperation2();
}
protected abstract void PrimitiveOperation1();
protected abstract void PrimitiveOperation2();
} public class ConcreteClassA : AbstractClass {
protected override void PrimitiveOperation1()
{
Debug.Log("ConcreteClassA.PrimitiveOperation1");
}
protected override void PrimitiveOperation2()
{
Debug.Log("ConcreteClassA.PrimitiveOperation2");
}
} public class ConcreteClassB : AbstractClass
{
protected override void PrimitiveOperation1()
{
Debug.Log("ConcreteClassB.PrimitiveOperation1");
}
protected override void PrimitiveOperation2()
{
Debug.Log("ConcreteClassB.PrimitiveOperation2");
}
}
//TemplateMethodTest.CS
void UnitTest() {
AbstractClass theClass = new ConcreteClassA();
theClass.TemplateMethod(); theClass = new ConcreteClassB();
theClass.TemplateMethod();
}
//测试结果
ConcreteClassA.PrimitiveOperation1
ConcreteClassA.PrimitiveOperation2
ConcreteClassB.PrimitiveOperation1
ConcreteClassB.PrimitiveOperation2

文章整理自书籍《设计模式与游戏完美开发》 菜升达 著

【Unity3D与23种设计模式】模板方法模式(Template Method)的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. MysqL_SELECT FOR UPDATE详解

    先来举一个在某些应用场景下会出现数据不一致的例子,当然存储引擎是InnoDB(至于为什么,后面再告诉你). 电商平台常见的下单场景: 一般商品表(goods)有基本的四个字段,id(主键),goods ...

  2. python函数式编程之迭代器

    什么是迭代器 顾名思义,就是更新换代的意思 python中的迭代器就是根据上一个结果生成下一个结果,一直循环往复不断重复的过程 迭代器有两个特点: 1.不断重复同一个过程 2.根据上一个结果生成下一个 ...

  3. zTree实现地市县三级级联DAO接口

    zTree实现地市县三级级联DAO接口 ProvinceDao.java: /** * @Title:ProvinceDao.java * @Package:com.gwtjs.dao * @Desc ...

  4. Java获取某年某季度的第一天出错

    1.错误描述 Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given ...

  5. Linux命令之finger

    Linux命令之finger youhaidong@youhaidong-ThinkPad-Edge-E545:~$ finger 程序"finger"尚未安装. 您可以使用以下命 ...

  6. java.lang.Exception: Socket bind failed

    1.错误描述 严重: Failed to initialize end point associated with ProtocolHandler ["http-apr-8080" ...

  7. Good Bye 2017 E. New Year and Entity Enumeration

    先按照绿点进行分块 第一个绿点和最后一个绿点之后很好处理不说了 两个绿点之间的讨论: 有两种方案 1:红(蓝)点和绿点顺序连接,距离为相邻绿点距离(也就是双倍绿点距离) 2:红(蓝)点和绿点的点阵中寻 ...

  8. hdu5893 List wants to travel

    裸的树链剖分加线段树区间修改 区间合并时需要多注意一点 当时写的很慢 理解不深刻 #include<bits/stdc++.h> using namespace std; const in ...

  9. dependencies 与 devDependencies 的区别

    dependencies 与 devDependencies 的区别 在使用 npm install 安装 npm 包时,有两种命令参数可以把它们的信息写入 package.json 文件: --sa ...

  10. JNDI在server.xml中的配置(全局和局部的)

    总结: 全局就是在数据源server.xml中配置,然后通过和项目名相同的xml来进行映射.对所有的项目都起作用.那个项目需要就在对应的tomcat下配置一个与项目名相同的xml映射文件. 局部的就是 ...