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

网站建设找 三尾狐可以做锚文本链接的网站

网站建设找 三尾狐,可以做锚文本链接的网站,开锁行业在58做网站有活吗,现在做什么行业前景好系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦#xff01;#xff01;#xff01; 现在的一切都是为将来的梦想编织翅膀#xff0c;让梦想在现实中展翅高飞。 Now everythi…系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦 现在的一切都是为将来的梦想编织翅膀让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 结构型设计模式之组合模式 系列文章目录一、组合模式介绍二、组合模式优缺点2.1 优点2.2 缺点 三、组合模式使用场景四、组合模式实现 一、组合模式介绍 ⚠️ 意图 将对象组合成树形结构以表示部分-整体的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 ⚠️ 主要解决 它在我们树型结构的问题中模糊了简单元素和复杂元素的概念客户程序可以像处理简单元素一样来处理复杂元素从而使得客户程序与复杂元素的内部结构解耦。 ⚠️ 何时使用 1、您想表示对象的部分-整体层次结构树形结构。 2、您希望用户忽略组合对象与单个对象的不同用户将统一地使用组合结构中的所有对象。 ⚠️ 如何解决 树枝和叶子实现统一接口树枝内部组合该接口。 现有一个公司需要实现一个广播的功能用来通知给公司所有部门重要的信息。如果需要广播那么必须通过每一个部门类的实例去调用各自部门的广播接口。通过一个抽象类来抽象出广播接口各个部门和公司都通过继承实现抽象接口。如此实现可以将所有部门放在一个容器内遍历实现其广播接口。如果公司不扩大永远有这几个部门并且没有分公司的话是没问题的。如果再要添加一个部门就必须实现一个部门类再修改总公司类。这明显违背了开闭原则。既然我们通过抽象类来实现了其方法那就可以实现抽象的增加删除查询接口。如此一来如果要有新的部门 那么只需要通过调用添加接口来增加新部门 广播的时候只需要遍历容器中的广播接口即可。实现类图如下 图1_1 组合模式类图 组合模式将对象组合成树形结构以表示“部分-整体”的层次结构组合模式使得用户对单个对象和组合对象的使用具有一致性。掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 “组合对象” 的含义。 组合模式可以让客户端像修改配置文件一样简单的完成本来需要流程控制语句来完成的功能。 二、组合模式优缺点 2.1 优点 简化客户端调用实现符合开闭原则。高层模块调用简单。节点自由增加 2.2 缺点 如果业务逻辑负责则实现组合模式比较困难。 在使用组合模式时其叶子和树枝的声明都是实现类而不是接口违反了依赖倒置原则。 三、组合模式使用场景 适用于“整体-部分”层次的树形结构的。部分、整体场景如树形菜单文件、文件夹的管理。 客户端对组合对象统一的使用所有对象。 四、组合模式实现 Component.h #ifndef COMPONENTS_H_ #define COMPONENTS_H_#include iostream #include vectorusing namespace std;class Components { public:Components(std::string strName):m_strName(strName){}virtual void Operation() 0;virtual void AddSubCompany(Components* subCompany);virtual void DelSubCompany(Components* subCompany);virtual Components* GetCompanyByIndex(int iIndex);protected:std::string m_strName; };class ConcreteCompany : public Components { public:ConcreteCompany(std::string strName):Components(strName){}~ConcreteCompany();virtual void Operation();virtual void AddSubCompany(Components* subCompany);virtual void DelSubCompany(Components* subCompany);virtual Components* GetCompanyByIndex(int iIndex); private:std::vectorComponents* m_vecSubItem; };class FinanceDepartment : public Components { public:FinanceDepartment(std::string strName):Components(strName){}virtual void Operation(); };class HRDepartment : public Components { public:HRDepartment(std::string strName):Components(strName){}virtual void Operation(); };#endifComponent.cpp #include Company.h #include algorithm#ifndef SAFE_DELETE #define SAFE_DELETE(p){if((p) ! NULL){delete (p); (p) NULL;}} #endifvoid Components::AddSubCompany( Components* subCompany ) {cout Have no realized! endl; }void Components::DelSubCompany( Components* subCompany ) {cout Have no realized! endl; }Components* Components::GetCompanyByIndex( int iIndex ) {cout Have no realized! endl;return NULL; }//******************// //**CentralCompany**// //******************//ConcreteCompany::~ConcreteCompany() {std::for_each(m_vecSubItem.begin(),m_vecSubItem.end(),[](Components* item){SAFE_DELETE(item);}); }void ConcreteCompany::Operation() {std::for_each(m_vecSubItem.begin(),m_vecSubItem.end(),[](Components* item){item-Operation();}); }void ConcreteCompany::AddSubCompany( Components* subCompany ) {if (subCompany ! NULL){m_vecSubItem.push_back(subCompany);} }void ConcreteCompany::DelSubCompany( Components* subCompany ) {for (auto it m_vecSubItem.begin(); it ! m_vecSubItem.end(); it){if ((*it) subCompany){m_vecSubItem.erase(it);SAFE_DELETE(subCompany);break;}} }Components* ConcreteCompany::GetCompanyByIndex( int iIndex ) {if (iIndex 0 || iIndex m_vecSubItem.size()){return NULL;}return m_vecSubItem[iIndex]; }void FinanceDepartment::Operation() {cout m_strName.c_str() endl; }void HRDepartment::Operation() {cout m_strName.c_str() endl; }main.cpp #include iostream #include Company.husing namespace std;int main() {Components* Central new ConcreteCompany(Central Company);Central-AddSubCompany(new FinanceDepartment(Central Finance Department));Central-AddSubCompany(new HRDepartment(Central HR Department));Components* Xian new ConcreteCompany(XiAn Company);Xian-AddSubCompany(new FinanceDepartment(XiAn Finance Department));Xian-AddSubCompany(new HRDepartment(XiAn HR Department));Central-AddSubCompany(Xian);Central-Operation();cout endl;Central-DelSubCompany(Xian);Central-Operation();return 0; }输出 Central Finance DepartmentCentral HR DepartmentXi’An Finance DepartmentXi’An HR DepartmentCentral Finance DepartmentCentral HR Department
http://www.yutouwan.com/news/384582/

相关文章:

  • 北京网站建设 云智互联电脑编程培训
  • 优化网站排名软件wordpress 手机无法访问
  • 福田商城网站制作网站开发建设及推广合同
  • 网站做树状结构有什么作用哪些域名商可以自助wordpress
  • 广州网站建设 讯度网络贵州省建设银行网站
  • 网站开发怎么人员组织推广引流网站
  • 先做网站还是先域名备案看广告得收益的app
  • 建公司网站需要自己有系统吗网页设计期末考试作品
  • 黑河哈尔滨网站建设wordpress登陆网址
  • 青岛一品网站建设wordpress 突然502
  • 网站做百度推广网站存在的问题
  • 住房城乡建设部办公厅网站PHP做网站的核心是什么
  • 什么是响应网站设计东营抖音代运营
  • 烟台专业的网站建站公司教你如何做网站
  • 网站营销案例展示查询网站服务器提供商
  • 整站优化关键词推广品牌vi形象设计公司
  • 物流那个网站做推广好北京互联网公司大厂有哪些
  • 做博客的网站有哪些制作app费用
  • 网站增长期怎么做wordpress中文免费企业模板
  • 网络营销 企业网站杭州专门做网站
  • 外国人爱做视频网站吗WordPress工具站点
  • 怎么用vs2010做网站怎么部署自己的网站
  • 公司网站上的员工风采怎么做门户网站的功能
  • 网站那种推广链接怎么做WordPress搬家后所有页面404
  • 毕业设计网站建设流程网页版微信无法登陆
  • 电商平台网站多少钱网站建设公司案例
  • 学做室内效果图的网站网站交互做的比较好的
  • wordpress换空间后内页全部404seo怎么做优化计划
  • 装饰公司营销网站模板阿里云wordpress xampp
  • 微信怎么开团购卖东西谷歌seo知识