设计模式在游戏中的应用--模板方法(七)
2018-03-01 14:24
295 查看
模板方法这个名字看着非常陌生,事实上在游戏中大量地使用了模板方法。由于游戏中存在玩家、NPC和静态物体等不同的对象,使用多态特性能非常好地进行区分。 模板方法的定义是:模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类能够在不改变算法结构的情况下,又一次定义算法中的某些步骤。
举个最简单的玩家和NPC死亡时的逻辑: 流程图例如以下:
代码例如以下 // MVC.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <string> #include <sstream> using namespace std; class Object { public: Object():m_dead(0) { } void SetDead() { cout<<"========================="<<endl; BeforeDead(); Ondead(); AfterDead(); cout<<"========================="<<endl; } virtual void BeforeDead() { } virtual void AfterDead() { } void Ondead() { cout<<"Skill End"<<endl; cout<<"you are dead!"<<endl; } bool IsDead() { return m_dead; } private: bool m_dead; }; class Player:public Object { public: virtual void BeforeDead() { cout<<"Interrupt trade if you are trading!"<<endl; } virtual void AfterDead() { cout<<"nothing!"<<endl; } }; class NPC:public Object { public: virtual void BeforeDead() { cout<<"Call BeforeDead Lua Script!"<<endl; } virtual void AfterDead() { cout<<"Call AfterDead Lua Script!"<<endl; } }; int _tmain(int argc, _TCHAR* argv[]) { auto_ptr<Player> player(new Player()); auto_ptr<NPC> npc(new NPC()); cout<<"Player dead!"<<endl; player->SetDead(); cout<<"NPC dead!"<<endl; npc->SetDead(); }
模板方法的长处是将共性在父类中实现,将差异化在不同的子类中实现。
相关文章推荐
- 设计模式在游戏中的应用--模板方法(七)
- Java设计模式应用——模板方法模式
- 设计模式的应用场景(13)--模板方法模式
- Android设计模式应用-模板方法模式
- [设计模式]模板方法模式(Template Method)---抽象类的常见应用
- 浅学设计模式之模板<Template>方法模式及在android中的应用
- Java 设计模式之模板方法开发中应用
- 设计模式在游戏中的应用--工厂方法(五)
- android应用框架设计之模板方法设计模式
- 黑马程序员:ClassLoader介绍、自定义ClasLoader的应用及模板方法设计模式
- 浅析设计模式之模板方法
- 设计模式 - Template Method Pattern(模板方法模式)
- 设计模式--模板方法模式(照旧,有类关系图)
- 设计模式笔记(十五) —— 模板方法模式
- 设计模式 - Template Method Pattern(模板方法模式)
- 设计模式(1)- 模板方法 Template Method Pattern
- 白话设计模式--行为型模式--Template Method模式(模板方法模式)
- builder模式在游戏设计中的应用
- 模板设计模式(Template Method)和窄接口 的应用1例
- 解读设计模式----模板方法模式(Template Method),电脑就是这样造出来的