当前位置: 首页 > news >正文

搜狗网站连云港网站设计

搜狗网站,连云港网站设计,设计类专业就业前景怎么样,长沙本地论坛有哪些前言 模式介绍 在之前简单工厂模式中#xff0c;我们介绍了简单工厂模式的缺陷是违背了开放-封闭原则。如果在面馆中添加了烤海参#xff0c;那将会修改waiter工厂类。违背了类内封闭原则。 还以面馆为例#xff0c;现在两种面#xff0c;用一个服务员来卖就可以#xff0…前言 模式介绍 在之前简单工厂模式中我们介绍了简单工厂模式的缺陷是违背了开放-封闭原则。如果在面馆中添加了烤海参那将会修改waiter工厂类。违背了类内封闭原则。 还以面馆为例现在两种面用一个服务员来卖就可以如果这个服务员不干了后面卖面的厨师需要兼职顶替服务员但是厨师又不能离开灶台就将模式改成了窗口排队式一队海参炒面另一队辣根汤面。每个窗口分别有一个厨师放饭一个会做海参炒面另一个会做辣根汤面。老板觉得这种模式挺好万一来了一个会做烤海参的就只需要开一个烤海参的窗口就好了不需要重新要服务员学习因为烤海参的就会卖。这就变成了工厂模式。 UML类图 这里涉及到2种类①我客户端排队买饭。②做饭厨师类工厂类为我生成饭。③菜品类生成菜品类。具体关系如下UML类图 代码实例 下面是noodle类是为工厂类使用的继承他就可以扩展noodle类别 #ifndef NOODLE_H #define NOODLE_Hclass noodle { public:noodle() {}~noodle() {}virtual void eating() 0; };#endif // NOODLE_H 下面是海参炒面类继承了noodle实现eating方法吃海参炒面 #ifndef HAISHENNOODLE_H #define HAISHENNOODLE_H#include noodle.hclass haishennoodle : public noodle { public:haishennoodle();~haishennoodle();virtual void eating(); };#endif // HAISHENNOODLE_H #include iostream #include haishennoodle.hhaishennoodle::haishennoodle() {}haishennoodle::~haishennoodle() {}void haishennoodle::eating() {std::cout 我是海参炒面里面没有海参哦吃的时候注意! std::endl; } 下面是辣根汤面继承了noodle实现eating方法吃辣根汤面 #ifndef LAGENNOODLE_H #define LAGENNOODLE_H#include noodle.hclass lagennoodle : public noodle { public:lagennoodle();~lagennoodle();virtual void eating(); };#endif // LAGENNOODLE_H #include iostream #include lagennoodle.hlagennoodle::lagennoodle() {}lagennoodle::~lagennoodle() {}void lagennoodle::eating() {std::cout 我是辣根汤面吃完呛的哼啊 std::endl; } 下面是waiter工厂的基类。所有工厂都继承这个类 #ifndef WAITER_H #define WAITER_Hclass noodle; class waiter { public:waiter() {}~waiter() {}virtual noodle *createnoodle() 0; };#endif // WAITER_H 下面是海参厨师工厂1海参厨师只管做海参炒面重写了createnoodle方法 #ifndef HAISHEN_H #define HAISHEN_H#include waiter.hclass noodle; class haishen : public waiter { public:haishen();~haishen();virtual noodle *createnoodle(); };#endif // HAISHEN_H #include iostream #include haishen.h #include haishennoodle.hhaishen::haishen() {}haishen::~haishen() {}noodle *haishen::createnoodle() {std::cout 面是我炒得我的名字叫海参 std::endl;return new haishennoodle(); } 下面是辣根厨师工厂1辣根厨师只管做辣根汤面重写了createnoodle方法 #ifndef LAGEN_H #define LAGEN_H#include waiter.hclass lagen : public waiter { public:lagen();~lagen();virtual noodle *createnoodle(); };#endif // LAGEN_H #include iostream #include lagen.h #include lagennoodle.hlagen::lagen() {}lagen::~lagen() {}noodle *lagen::createnoodle() {std::cout 吃辣根汤面你不觉得呛得哼吗? std::endl;return new lagennoodle(); } 下面是客户端客户端通过类别使用相应的工厂类建立相应的实例 #include iostream #include string.h#include haishen.h #include lagen.h #include noodle.husing namespace std;char *product_list[] {haishen-noodle,lagen-noodle,NULL };int main() {char *p NULL;char *pd haishen-noodle;int i 0;waiter *w NULL;noodle *n NULL;for(p product_list[i]; p ! NULL; i, p product_list[i]) {if(strncmp(pd, p, strlen(pd)) 0) {if(i 0) {w new haishen();} else if(i 1) {w new lagen();} else {cout 对不起请您排在队内 std::endl;break;}}}if(w) n w-createnoodle();if(n) n-eating();if(w) {delete w; w NULL;}if(n) {delete n; n NULL;}return 0; } 下面是CMakeList.txt文件帮助生成Makefile cmake_minimum_required(VERSION 2.8)project(noodle-factory) set(SRC_LIST main.cpp noodle.h waiter.h haishen.h haishen.cpp haishennoodle.h haishennoodle.cpplagennoodle.h lagennoodle.cpp lagen.h lagen.cpp) add_executable(${PROJECT_NAME} ${SRC_LIST}) 编译运行结果 代码下载链接是https://github.com/erguangqiang/freesir_headfirst/blob/master/noodle-factory.tar.gz 使用cmake生成Makefile并编译出可执行程序noodle。运行结果如下 erguangqiangelab$./noodle-factory 面是我炒得我的名字叫海参 我是海参炒面里面没有海参哦吃的时候注意 结束 工厂模式解决了简单工厂违背了的开放-封闭原则。虽然累的结构变的复杂了但是对于扩展性得到了很大的提高。 转载于:https://www.cnblogs.com/freeman2012/p/11206166.html
http://www.zqtcl.cn/news/336153/

相关文章:

  • 全屏网站 功能丽水市企业网站建设 微信营销 影视拍摄
  • 天天爱天天做视频网站网站推送
  • 制作企业网站与app有什么不同化工企业网站建设
  • 东莞企业推广网站专门做黄漫的网站
  • 温州网站关键词排名优化win10 电脑做网站服务器
  • 网站设计规划信息技术教案营销模式和营销策略
  • 太仓住房城乡建设网站微信怎么注册
  • 德骏网站建设重庆企业网站如何推广
  • 路由器做内部网站服务器石家庄新闻综合频道在线直播回放
  • 怎么给网站备案亚马逊网站建设与维护方法分析
  • 金华网站建设团队产品网络推广方案范文
  • 拼多多刷单网站开发虚拟机可以做两个网站
  • wordpress安装路径和站点地址的设置信通网站开发中心
  • 柳州公司网站建设网站服务商
  • 智能建站实验报告成功营销网站
  • 基于jsp的网站开发开题报告青海公路工程建设市场信用信息服务网站
  • 做网站页面的软件wordpress如何开启page页面评论
  • 做网站最简单的长春财经学院
  • 导购网站 icp备案要求网站设置ico
  • ftp做网站营销策划方案步骤
  • 网站建设若干意见wordpress查看数据库密码
  • 什么网站可以做宣传西安网站建设聚星互联
  • 产品展示网站源码2015年做哪些网站致富
  • 潍坊网站制作推广怎样做彩票网站
  • 做视频网站被判刑自己怎么做企业网站建设
  • 安庆网站建设兼职哪个公司的卡网络最好
  • tp框架做响应式网站青岛网站建设首选
  • 外国自适应企业网站做网站模板用什么框架
  • win7做网站服务器隐私浏览器
  • 优秀的设计网站广州排名推广