设计模式之外观模式

来源:互联网 发布:淘宝定制t恤 编辑:程序博客网 时间:2024/05/17 06:18

原文地址: http://blog.csdn.net/iuhsihsow


外观模式主要是用于对底层细节的封装,当然,要结合每个系统的上层应用。

比如很多三维软件就是对DX或者OpenGL的底层细节进行了封装,可以这么说吧大笑


下面是类图



下面是代码

// 外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式 // 定义了一个高程接口,这个接口使得这一子系统更加容易使用。   // 情景假设 // 某一软件,运行时需要连接数据库,获取数据文本,假设为txt文本 // 数据库是Oracle,从数据库中取出的是加密过的文件 // 解密子系统是decryption,解密之后是一个rar,需要解压 // 解压子系统是rar // 现在创建一个facade掩盖此过程,做到用户给一个输入,就能得到输出。   // 这个例子比较简单,因为就是封装下接口,不需要用到多态之类的 // 所以每个类就只声明一个对象即可  // 最终用户知道的细节越少越好,迪米特法则  #include "stdafx.h" #include <Windows.h>  //数据库子系统 class OracleDB { public: bool GetDataFromDB(long id, byte* &pBuf) { printf("Connect to oracle now!\n"); printf("Get data from Oracle now!\n"); return true; } protected: private: };  //解密子系统 class Decryption { public: bool Decrypt(byte* &pBuf)  { byte *pDecryption = NULL; pBuf = pDecryption; printf("Sucessful Decrypt!\n"); return true; } protected: private: };  //解压缩子系统 class RARSys { public: bool UnCompress(byte* &pBuf, char* pPath) { byte* pUncompress = NULL; pBuf = pUncompress; printf("Sucessful Uncompress!\n"); if (WriteData(pPath)) { return true; }  } protected: private: bool WriteData(char* pPath) { printf("Txt is put in this path:\n"); printf(pPath); printf("\n"); return true; } };   //外观类 class Facade { public: bool GetTxt(long id, char *pPath) { OracleDBdb; Decryptiondp; RARSysrs; byte *pBuf; db.GetDataFromDB(id, pBuf); dp.Decrypt(pBuf); rs.UnCompress(pBuf, pPath); return true; } protected: private: };   int _tmain(int argc, _TCHAR* argv[]) { Facade fd; fd.GetTxt(100, "D:\\temp.txt"); return 0; }   输出结果: //Connect to oracle now! //Get data from Oracle now! //Sucessful Decrypt! //Sucessful Uncompress! //Txt is put in this path: //D:\temp.txt //请按任意键继续. . .



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子贪玩不爱学习怎么办 高二了还不学怎么办 小朋友不喜欢上幼儿园怎么办 一岁半的宝宝不听话怎么办 老公是个窝囊废怎么办 幼儿园老师不喜欢家长怎么办 老师讨厌学生了怎么办 一个舍友很讨厌怎么办 家长对老师不满怎么办 教师被家长辱骂怎么办 如果老师喜欢自己怎么办 孩子不思进取逃避学习怎么办 老师拿孩子泄愤怎么办 老师对小孩不好怎么办 孩子被老师骂怎么办 孩子幼儿园被打怎么办 两个家长吵架老师怎么办 家长和老师矛盾怎么办 孩子特别害怕老师怎么办? 老师排挤孤立孩子怎么办 很害怕一件事怎么办 高中老师误会我怎么办 家长讹老师老师怎么办 小孩子老说头疼怎么办 孩子总是否定自己怎么办 孩子总是否定别人怎么办 老师屏蔽家长该怎么办 初二学生学疲劳怎么办 孩子不愿补英语怎么办 培训班孩子不学怎么办 小孩不想去学校怎么办 讨厌父母的性格怎么办 老师揪孩子耳朵怎么办 老师整天骂孩子怎么办 教师被学生骂怎么办 幼儿园学生骂老师怎么办 学生骂老师外号怎么办 小孩上课很多嘴怎么办 学生老玩手机怎么办 和校长有了矛盾怎么办 家长打了我怎么办