为了账号安全,请及时绑定邮箱和手机立即绑定

源码里面的代理构造函数时什么意思呀?为什么要定义mazemap和mymazemap

class MazeMap;              //声明被代理的类


class MyMazeMap

{

public:

MyMazeMap();                             //声明MyMazeMap的构造方法

//构造函数,使用用户自定义的地图。

//*mazeMap 地图二维数组首地址;row 地图数组中的行数;column 地图数组中的列数

MyMazeMap(int *mazeMap, int row, int column);

~MyMazeMap();                             //声明MyMazeMap的析构方法

void setMazeWall(char wall);                         //设置表示墙的字符

void setMazeRoad(char road);     //设置表示路的字符

void defaultMode();                                  //设置迷宫的默认地图

void setMazeMap(int *mazeMap,int row,int column);    //重新设置迷宫地图

void drawMap() const;                                //声明绘制迷宫地图的函数


private:

MazeMap *mazeMap;       //声明被代理类型的指针

};


#endif //MymazeMap_H_


正在回答

4 回答

受教了,Java里见过代理模式,在C++里第一次见这个把我搞蒙了。

0 回复 有任何疑惑可以回复我~

很感谢  了解了不少东西

0 回复 有任何疑惑可以回复我~

很感谢  了解不了东西 

0 回复 有任何疑惑可以回复我~

MazeMap是迷宫地图是必须的,MyMazeMap不是必须的,MyMazeMap的作用就是对MazeMap进行了一次封装。然后我们就可以操作MyMazeMap来进行操作MazeMap,MazeMap里面的细节调用者就不用关心。其实就相当于,就算后期对MazeMap的逻辑有所改动,我们的main函数中的代码也无需改变,因为我们在main中调用的是MyMazeMap,MyMazeMap屏蔽了MazeMap的细节。就相当于电视机一样,MazeMap就类似于电视机里面的主板部件等等,而MyMazeMap就是电视机的外壳上面有几个开机关机,调节音量的按钮。我们在使用电视机的时候只需要知道如何使用电视机的按钮及每个按钮的作用就行了,里面的主板细节我们不需要关心。就算厂商后期出了新一代的电视机,那么电视机里面的主板电路不管怎么更新改变,只要电视机外壳上的那几个按钮不变,我们照样像以前一样使用这个新的电视机。这就是封装的好处。

6 回复 有任何疑惑可以回复我~
#1

一朵风中摇曳的野蔷薇 提问者

谢谢,受教了!感觉自己的代码能力还差的很多
2017-09-18 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(下)
  • 参与学习       70919    人
  • 解答问题       514    个

封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通

进入课程

源码里面的代理构造函数时什么意思呀?为什么要定义mazemap和mymazemap

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信