【Design Pattern】外观模式 Facade
2016-03-23 23:17
387 查看
外观模式
外观模式其实很简单,就是把一系列的方法进行封装。比如说以下这个游戏有两个怪物,一个是小怪一个是boss。当游戏难度的不同时怪物的血量会不同。请看如下代码:
class Monster
{
private:
int HP;
public:
Monster(int HP)
{
this->HP = HP;
}
};
class Small_monster:public Monster
{
public:
Small_monster(int HP):Monster(HP)
{
}
};
class Boss_monster:public Monster
{
public:
Boss_monster(int HP):Monster(HP)
{
}
};
那么在客户端要使用的话会这样做:
class Client
{
public:
static client_func()
{
//easy level
vector<Monster*> easy_level;
Monster* small = new Small_monster(200);
Monster* boss = new Boss_monster(2000);
easy_level.push_back(small);
easy_level.push_back(boss);
//middle level
vector<Monster*> middle_level;
Monster* small = new Small_monster(2000);
Monster* boss = new Boss_monster(20000);
easy_level.push_back(small);
easy_level.push_back(boss);
//hard level
vector<Monster*> hard_level;
Monster* small = new Small_monster(20000);
Monster* boss = new Boss_monster(200000);
easy_level.push_back(small);
easy_level.push_back(boss);
}
};
通过上述代码可以看到,
为了
外观模式其实很简单,就是把一系列的方法进行封装。比如说以下这个游戏有两个怪物,一个是小怪一个是boss。当游戏难度的不同时怪物的血量会不同。请看如下代码:
class Monster
{
private:
int HP;
public:
Monster(int HP)
{
this->HP = HP;
}
};
class Small_monster:public Monster
{
public:
Small_monster(int HP):Monster(HP)
{
}
};
class Boss_monster:public Monster
{
public:
Boss_monster(int HP):Monster(HP)
{
}
};
那么在客户端要使用的话会这样做:
class Client
{
public:
static client_func()
{
//easy level
vector<Monster*> easy_level;
Monster* small = new Small_monster(200);
Monster* boss = new Boss_monster(2000);
easy_level.push_back(small);
easy_level.push_back(boss);
//middle level
vector<Monster*> middle_level;
Monster* small = new Small_monster(2000);
Monster* boss = new Boss_monster(20000);
easy_level.push_back(small);
easy_level.push_back(boss);
//hard level
vector<Monster*> hard_level;
Monster* small = new Small_monster(20000);
Monster* boss = new Boss_monster(200000);
easy_level.push_back(small);
easy_level.push_back(boss);
}
};
通过上述代码可以看到,
为了
相关文章推荐
- 新起点
- ie11不再支持attachEvent事件
- gnuplot画图一
- 三色球问题
- OpenCV基础
- collectionview实现无限轮播
- NYOJ----776删除元素
- C# byte数组与Image相互转换的方法
- ubuntu虚拟机配置nfs服务器软件的步骤
- C/C++语言void及void指针深层探索
- 几种排序算法的简单总结
- auto format code in visual studio
- 基础练习 数的读法
- 观察者模式
- Druid连接池及监控在spring中的配置
- 基础练习 Sine之舞
- Object类
- HDU 4280 Island Transport (网络流)
- Java学习笔记之JDBC
- ASP.NET MVC系列:从Controller访问Model数据