古月不傲 发表于 2020-11-16 16:47

外观模式

#include <iostream>

#include <list>

using namespace std;

// 外观模式
namespace facade_pattern {
// 目标属性
struct target
{
    string name;
    double x;
    double y;
    double z;
};

// 人物移动
class move
{
public:
    void person_move(double x, double y, double z) {
      printf("移动\n");
    }
};

// 人物攻击
class attack
{
public:
    void person_attack(string name) {
      printf("攻击\n");
    }
};

// 人物拾取
class pick
{
public:
    void person_pick() {
      printf("拾取\n");
    }
};

// 脚本
class script
{
public:
    void start(const target &t) {
      m.person_move(t.x, t.y, t.z);
      a.person_attack(t.name);
      p.person_pick();
    }
private:
    move m;
    attack a;
    pick p;
};
}

// 可以看出外观模式非常直观 通过一个辅助类 实现解偶 如果模块较多、相互之间比较紧密 可以考虑
int main(void)
{
    using namespace facade_pattern;

    script s;
    target t;

    t.name = "大龙";
    t.x = 50;
    t.y = 100;
    t.z = 1.5;
    s.start(t);

    return 0;
}

沉默之剑 发表于 2020-11-16 17:23

请问楼主是想在黑窗口展示吗?还是外接一个GUI?
页: [1]
查看完整版本: 外观模式