外观模式 简化操作对外。甚至可以理解为对外的傻瓜操作。比如游戏的上下左右。隐藏底层的逻辑。 核心 接口不变。接口实现变化。甚至可以理解为只有函数声明。 使用场景 分层结构。对外提供函数,系统对外仅仅提供几个系统调用。
简化操作对外。甚至可以理解为对外的傻瓜操作。比如游戏的上下左右。隐藏底层的逻辑。
接口不变。接口实现变化。甚至可以理解为只有函数声明。
分层结构。对外提供函数,系统对外仅仅提供几个系统调用。
书接上回 鞋贩子开通了一个小程序,允许客户在线选购。就提供了选择和买卖的功能。 代码 #include #include #include class CangKu { public: bool ChuHuo(std::string shangpin,int shuliang){ auto iter = shangpin_shuliang_.find(shangpin); if(shangpin_shuliang_.end() != iter) { while(shuliang >= iter->second) { std::cout << "xian you " << iter->second << " xu yao:" << shuliang <<" jin huo ....." << std::endl; iter->second += 50; } iter->second -= shuliang; } else { int count = 0; while(shuliang >= count) { std::cout << "xian you " << count << " xu yao:" << shuliang <<" jin huo ....." << std::endl; count += 50; } shangpin_shuliang_[shangpin] = count - shuliang; } return true; } bool TuiHuo(std::string shangpin,int shuliang) { auto iter = shangpin_shuliang_.find(shangpin); if(shangpin_shuliang_.end() != iter) { iter->second += shuliang; return true; } else { std::cout << "mei mai guo" << std::endl; return false; } } private: std::map shangpin_shuliang_; }; class XiaoChengXu { public: bool MaiShangPin(std::string shangpin,int shu_liang){ return cangku_.ChuHuo(shangpin,shu_liang); } bool TuiShangPin(std::string shangpin,int shu_liang){ return cangku_.TuiHuo(shangpin,shu_liang); } private: CangKu cangku_; }; int main() { XiaoChengXu chengxu; chengxu.MaiShangPin("tuoxie",3); chengxu.MaiShangPin("liangxie",3); chengxu.TuiShangPin("qiuxie",3); } 说明 卖不够就进货。买没有这个商品就告知无售卖记录。
鞋贩子开通了一个小程序,允许客户在线选购。就提供了选择和买卖的功能。
#include #include #include class CangKu { public: bool ChuHuo(std::string shangpin,int shuliang){ auto iter = shangpin_shuliang_.find(shangpin); if(shangpin_shuliang_.end() != iter) { while(shuliang >= iter->second) { std::cout << "xian you " << iter->second << " xu yao:" << shuliang <<" jin huo ....." << std::endl; iter->second += 50; } iter->second -= shuliang; } else { int count = 0; while(shuliang >= count) { std::cout << "xian you " << count << " xu yao:" << shuliang <<" jin huo ....." << std::endl; count += 50; } shangpin_shuliang_[shangpin] = count - shuliang; } return true; } bool TuiHuo(std::string shangpin,int shuliang) { auto iter = shangpin_shuliang_.find(shangpin); if(shangpin_shuliang_.end() != iter) { iter->second += shuliang; return true; } else { std::cout << "mei mai guo" << std::endl; return false; } } private: std::map shangpin_shuliang_; }; class XiaoChengXu { public: bool MaiShangPin(std::string shangpin,int shu_liang){ return cangku_.ChuHuo(shangpin,shu_liang); } bool TuiShangPin(std::string shangpin,int shu_liang){ return cangku_.TuiHuo(shangpin,shu_liang); } private: CangKu cangku_; }; int main() { XiaoChengXu chengxu; chengxu.MaiShangPin("tuoxie",3); chengxu.MaiShangPin("liangxie",3); chengxu.TuiShangPin("qiuxie",3); }
卖不够就进货。买没有这个商品就告知无售卖记录。
对外就仅仅是提供一个函数。 然后隐藏具体的实现细节。操作系统对外,C函数之类的一样。都是外观模式。strchr也没有提供细节,仅仅提供了一个外观。
上一篇 【Python】PyQt5中Qt designer.exe的路径
下一篇 C语言基础练习100--014(学习成绩,三目运算符)
版权所有 (c)2021-2022 MSHXW.COM
ICP备案号:晋ICP备2021003244-6号