标签:结果 inf href 依赖性 对象 lan null strong 开闭原则
外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
#ifndef HERO_H
#define HERO_H
#include <QDebug>
class Hero
{
public:
Hero(QString name):m_Name(name){}
~Hero(){}
inline void ZhongDan() { qDebug() << m_Name << " 中单";}
inline void DaYe() { qDebug() << m_Name << " 打野";}
inline void FuZhu() { qDebug() << m_Name << " 辅助";}
inline void FaYu() { qDebug() << m_Name << " 发育";}
inline void KangYa() { qDebug() << m_Name << " 抗压";}
protected:
QString m_Name;
};
class ZhenJi : public Hero
{
public:
ZhenJi():Hero("甄姬"){}
~ZhenJi(){}
};
class ZhaoYun : public Hero
{
public:
ZhaoYun():Hero("赵云"){}
~ZhaoYun(){}
};
class XiangXiang : public Hero
{
public:
XiangXiang():Hero("大小姐"){}
~XiangXiang(){}
};
class LianPo : public Hero
{
public:
LianPo():Hero("廉颇"){}
~LianPo(){}
};
class LvBu : public Hero
{
public:
LvBu():Hero("吕布"){}
~LvBu(){}
};
#endif // HERO_H
#ifndef FACADE_H
#define FACADE_H
/************************************
* @brief : 用外观模式封装几个不同的子系统,
* 子系统的操作统一放到外观模式的方法去
* 峡谷系统安排:
* 外观类:游戏不同的阵容组合
* 英雄类:不同的英雄,可以打不同的位置
* 外观类组合不同的英雄,得到一个胜率值
* @author : wzx
* @date : 2020-04-17
* @project : Facade
*************************************/
#include "hero.h"
class Facade
{
public:
Facade();
~Facade();
double LineUpA();
double LineUpB();
double LineUpC();
private:
XiangXiang* m_XX;
ZhaoYun* m_ZY;
LvBu* m_LB;
LianPo* m_LP;
ZhenJi* m_ZJ;
};
#endif // FACADE_H
#include "facade.h"
#define DELEOBJECT(x) if(x == nullptr) { delete x; x = nullptr;}
Facade::Facade()
{
m_XX = new XiangXiang();
m_ZY = new ZhaoYun();
m_LB = new LvBu();
m_LP = new LianPo();
m_ZJ = new ZhenJi();
}
Facade::~Facade()
{
DELEOBJECT(m_XX);
DELEOBJECT(m_ZY);
DELEOBJECT(m_LB);
DELEOBJECT(m_LP);
DELEOBJECT(m_ZJ);
}
double Facade::LineUpA()
{
m_XX->FaYu();
m_ZY->DaYe();
m_LB->KangYa();
m_LP->FuZhu();
m_ZJ->ZhongDan();
return 0.88;
}
double Facade::LineUpB()
{
m_XX->FaYu();
m_ZY->KangYa();
m_LB->DaYe();
m_LP->FuZhu();
m_ZJ->ZhongDan();
return 0.40;
}
double Facade::LineUpC()
{
m_XX->FaYu();
m_ZY->DaYe();
m_LB->ZhongDan();
m_LP->KangYa();
m_ZJ->FuZhu();
return 0.60;
}
#include <QCoreApplication>
#include "facade.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Facade facade;
qDebug() << "胜率" << facade.LineUpA()*100 << "%" << endl;
qDebug() << "胜率" << facade.LineUpB()*100 << "%" << endl;
qDebug() << "胜率" << facade.LineUpB()*100 << "%" << endl;
return a.exec();
}
"大小姐" 发育
"赵云" 打野
"吕布" 抗压
"廉颇" 辅助
"甄姬" 中单
胜率 88 %
"大小姐" 发育
"赵云" 抗压
"吕布" 打野
"廉颇" 辅助
"甄姬" 中单
胜率 40 %
"大小姐" 发育
"赵云" 抗压
"吕布" 打野
"廉颇" 辅助
"甄姬" 中单
胜率 40 %
外观模式的优点
外观模式的缺点
标签:结果 inf href 依赖性 对象 lan null strong 开闭原则
原文地址:https://www.cnblogs.com/wzxNote/p/12718427.html