设计模式在游戏中的应用--外观模式(八)

外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。外观模式相当于KFC里面的套餐,大多数人去FKC吃中饭,本质其实就是为了填饱肚子,消费者需要主食、饮料和小吃,有了各种套餐之后,消费者去KFC可以选择各种套餐就能满足自己的需要,不至于由于自己不会点餐都点主食而造成口渴和难以下咽的情况。套餐可以满足大多数人的需求。

MMORPG游戏中也有着一些外观模式的应用,例如游戏中一种套餐可以让玩家升级到满级,学习和装备了最高的技能和装备。

相关的流程图如下:

相关的代码如下:

// MVC.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <string>
#include <sstream>
using namespace std;

class Skill
{
public:
    Skill(){};
public:
    void EquipSkill()
    {
        cout<<"EquipSkill"<<endl;
    }
};

class Level
{
public:
    Level(){};
public:
    void GetMaxLevel()
    {
        cout<<"Level Up 100 "<<endl;
    }
};

class Equip
{
public:
    Equip(){};
public:
    void GetBestEquip()
    {
        cout<<"Top Equip "<<endl;
    }
};

class Player
{
public:
    Player()
    {
        pSkill = new Skill();
        pLevel = new Level();
        pEquip = new Equip();
    };
public:
    void Superman()
    {
        pSkill->EquipSkill();
        pLevel->GetMaxLevel();
        pEquip->GetBestEquip();
    }
private:
    Skill* pSkill;
    Level* pLevel;
    Equip* pEquip;

};

void main()
{
    Player* player = new Player();
    player->Superman();
}

外观模式是在一些基础接口之上建立的高级接口,例如在MVC的各个层级之间需要使用外观模式来生成一些易于调用的接口。同时,在游戏的开发过程当中会使用很多的外部库,可是这些外部库的接口不是那么地人性化,这时我们的第一印象就是对其进行封装,其本质就是使用外观模式来得到一些高级的利用我们使用的接口。

还有其实我们的游戏开发过程当中会有很多的作弊码,这些作弊码就是基于我们的游戏框架作为基础接口来生成的作弊码接口。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-05 00:22:24

设计模式在游戏中的应用--外观模式(八)的相关文章

设计模式在游戏中的应用--建造者模式(九)

建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.建造者模式是一种对象创建型模式.通过这个定义,我们可以得出建造者是一种创建型模式,也就是说建造者模式的输出是一个对象,也就是UML类图中的product. 我们先看看建造者模式的UML类图: UML类图中我们可以看出,建造者模式使用了聚合.继承和依赖三种关系.第一个疑问就是为什么要使用聚合,如果我们不使用聚合的话,我们始终得到的都是稳定的构建过程,例如我们游戏中每个NPC都有2

设计模式在游戏中的应用--原型模式(六)

Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建. 上面是原型模式的UML结构图. 下面是原型模式的代码: #include "stdafx.h" #include <iostream> #include <string> using namespace s

设计模式(十一):FACADE外观模式 -- 结构型模式

1. 概述 外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性.例子1:一个电源总开关可以控制四盏灯.一个风扇.一台空调和一台电视机的启动和关闭.该电源总开关可以同时控制上述所有电器设备,电源总开关即为该系统的外观模式设计. 2. 问题 为了降低复杂性,常常将系统划分为若干个子系统.但是如何做到各个系统之间的通信和相互依赖关系达到最小呢? 3. 解决方案 外观模式:为子系统中的一组接口提供一个一致的界面,

java/android 设计模式学习笔记(14)---外观模式

这篇博客来介绍外观模式(Facade Pattern),外观模式也称为门面模式,它在开发过程中运用频率非常高,尤其是第三方 SDK 基本很大概率都会使用外观模式.通过一个外观类使得整个子系统只有一个统一的高层的接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节.当然,在我们的开发过程中,外观模式也是我们封装 API 的常用手段,例如网络模块.ImageLoader 模块等.其实我们在开发过程中可能已经使用过很多次外观模式,只是没有从理论层面去了解它. 转载请注明出处:http://bl

设计模式在游戏中的应用--观察者模式(十)

观察者模式看似很陌生,其实可以说观察者模式是游戏中使用最多的一种模式,甚至比单例模式还要使用频繁,而且想要写好游戏的代码必须了解游戏中的那些地方使用了观察者模式,每个观察者的订阅者是谁. 大多数MMORPG游戏主体就是一个while循环,通过这些while循环来更新订阅者,从而来更新观察者.例如我们有个玩家的订阅者,每个玩家就是一个观察者,我只需要更新订阅者来更新每个观察者.我们每个玩家身上有很多的buff,我们玩家就是订阅者,每个buff就是观察者,这样玩家获得更新的时候,我们身上的每个buf

设计模式(十二): 外观模式

外观模式 外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性. 这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用. 介绍 意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口. 何时使用: 1.客户

设计模式学习笔记之适配器模式、外观模式

适配器模式     将一个类的接口转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间. 通过创建适配器进行接口转换,让不兼容的接口变成兼容.这可以让客户从实现的接口解耦.如果在一段时间后,想要改变接口,适配器可以将改变的部分封装起来,客户就不必为了应对不同的接口 而每次跟着修改. 客户使用适配器的过程: 1.客户通过目标接口调用适配器的方法对适配器发出请求: 2.适配器使用被适配器接口把请求转换成被适配器的一个或多个调用接口: 3.客户端收到调用的结果,但并未察觉这一切是适配器在

《大话设计模式》ruby版代码:外观模式

需求: 股民买卖股票 初步代码: # -*- encoding: utf-8 -*- #股票1 class Stock1 def buy puts '股票1买入' end def sell puts '股票1卖出' end end #股票2 class Stock2 def buy puts '股票2买入' end def sell puts '股票2卖出' end end #股票3 class Stock3 def buy puts '股票3买入' end def sell puts '股票3

设计模式在游戏中的应用--模板方法(七)

模板方法这个名字看着很陌生,其实在游戏中大量地使用了模板方法,因为游戏中存在玩家.NPC和静态物体等不同的对象,使用多态特性能很好地进行区分. 模板方法的定义是:模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤. 举个最简单的玩家和NPC死亡时的逻辑: 流程图如下: 代码如下 // MVC.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include