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

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

转载于:https://www.cnblogs.com/fws94/p/7211256.html

【Unity3D与23种设计模式】模板方法模式(Template Method)相关推荐

  1. 23种设计模式----模板方法模式----行为模式

    模板方法模式 1.模板方法模式是什么 2.模板方法的组成 3.模板方法中不同的类的行为 4.例子 4.1 例子的背景 4.2模板类--父亲寻找继承人的方式 4.3实现类----孩子类 4.4测试类-- ...

  2. 15、面向对象语言的23种设计模式-模板方法模式

    一.什么是模板方法模式 就是给固定的流程制定一个模板,然后一步步执行,基本就是对普通方法.抽象方法以及虚方法的实际运用. 二.模板方法模式的作用 模板方法非常强大,框架搭建必备. 模板方法:定义通用处 ...

  3. 趣谈设计模式 | 模板方法模式(Template Method):封装不变部分,扩展可变部分

    文章目录 案例:房屋建造 模板方法模式 模板方法模式与策略模式 总结 完整代码与文档 这个设计模式过于简单,所以不是很好举例- 案例:房屋建造 假设我们是建筑公司中的规划者,负责设定建筑方案,在初期我 ...

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

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

  5. JAVA设计模式(14) —行为型模板方法模式(Template Method)

    1 定义: 模板方法模式(Template Method) Define the skeleton of an algorithm in anoperation, deferring some ste ...

  6. java 模板方法_设计模式(java实现)_模板方法模式(Template method)

    设计模式(java实现)_模板方法模式(Template method) 模板方法模式是编程中经常用到到的模式.它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现.这样,新的子类可以在不改变一个 ...

  7. 23种设计模式----------代理模式(一)

    代理模式也叫委托模式. 代理模式定义:对其他对象提供一种代理从而控制对这个对象的访问.就是,代理类 代理 被代理类,来执行被代理类里的方法. 一般情况下,代理模式化有三个角色. 1,抽象的主题类(或者 ...

  8. 23种设计模式——桥接模式

    文章目录 23种设计模式--桥接模式 1.桥接模式概述 2.桥接模式结构 3.桥接模式的实现 4.桥接模式的注意事项和细节 23种设计模式--桥接模式 1.桥接模式概述 桥接模式介绍 桥接(Bridg ...

  9. 23种设计模式-工厂模式

    23种设计模式-工厂模式 前言: [我们为什么需要使用工厂模式?] /*** 在使用工厂模式之前,我们要创建 实现了相同接口的对象 都需要直接new(),如下* */@Testpublic void ...

  10. 23种设计模式——工厂模式

    文章目录 23种设计模式--工厂模式 1.工厂模式概述 2.简单工厂模式 2.1.简单工厂模式的优缺点 2.2.简单工厂模式的结构 2.3.简单工厂模式的实现 3.工厂方法模式 3.1.工厂方法模式的 ...

最新文章

  1. 华人小哥控诉机器学习「四大Boring」,CS博士:深有同感,正打算退学
  2. AllUsers And SiteUsers
  3. asp获取屏幕分辨率
  4. 学PyTorch还是TensorFlow?
  5. 运动搜索(运动估计)知识
  6. 2016计算机应用论基础,2016-2017-2计算机应用基础理论复习题.docx
  7. 10.24 环境变量PATH,cp,mv,文档查看cat/more/less/head/tail
  8. 前端开发写代码哪个软件更好用?
  9. “智”在这里,图扑软件解码智慧选煤厂
  10. socket pro
  11. R语言缺失值判断与处理mice包-3
  12. 深度教练:让深度学习模拟人类教学过程,大幅减少训练数据和时间
  13. nginx反向代理打印日志_Nginx 反向代理 log 显示真IP地址
  14. 移动端adaptive设置
  15. win10怎么新建计算机用户,Win10添加用户教程(Microsoft微软帐户、本地帐户、儿童帐户)...
  16. JS学习笔记:Javascript给对象增加属性(函数作为属性)
  17. GMM的EM算法实现
  18. 如何用大数据软件确定 数码电子店铺选址
  19. HTML可以替代CSS的所有功能,8款替代Dreamweaver的开源网页开发工具_html/css_WEB-ITnose...
  20. 魔域mysql修改_魔域数据库各表属性完整介绍

热门文章

  1. 数字人民币明确不采用区块链技术,对数字货币投资须保持警惕
  2. ImportBeanDefinitionRegistrar向容器中注册bean
  3. S5PV210开发 -- 驱动开发相关硬件简介
  4. 【译】Beyond Snarks: Some Blockchain Privacy Protocols You Need to Know About
  5. Android后台杀死系列之三:LowMemoryKiller原理(4.3-6.0)
  6. Distributed Systems笔记-NFS、AFS、GFS
  7. Android apk动态加载机制的研究
  8. protobuf java_ProtoBuf for java使用笔记 | 学步园
  9. bme280 环境传感器开发板_盘一盘那些年我们常用的物联网开发板!
  10. JZOJ 5436. 【NOIP2017提高A组集训10.30】Group