外观模式(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的各个层级之间需要使用外观模式来生成一些易于调用的接口。同时,在游戏的开发过程当中会使用很多的外部库,可是这些外部库的接口不是那么地人性化,这时我们的第一印象就是对其进行封装,其本质就是使用外观模式来得到一些高级的利用我们使用的接口。
还有其实我们的游戏开发过程当中会有很多的作弊码,这些作弊码就是基于我们的游戏框架作为基础接口来生成的作弊码接口。