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

怎样做网站信箱传媒公司简介范文

怎样做网站信箱,传媒公司简介范文,网站编程图,晋城市企业网站一#xff0c;组合模式简介 真实世界中#xff0c;像企业组织、文档、图形软件界面等案例#xff0c;它们在结构上都是分层次的。将系统分层次的方式使得统一管理和添加不同子模块变得容易#xff0c;在软件开发中#xff0c;组合模式的设计思想和它们类似。 组合模式是…一组合模式简介 真实世界中像企业组织、文档、图形软件界面等案例它们在结构上都是分层次的。将系统分层次的方式使得统一管理和添加不同子模块变得容易在软件开发中组合模式的设计思想和它们类似。 组合模式是一种结构型设计模式该模式将对象组合成树状结构以便于分层和统一管理。 组合模式用于为复杂的分层的系统结构定义基本的蓝图并对外提供统一的接口简化了系统组件的使用方法。 二组合模式的结构 1.组件类(Component)声明了统一的抽象接口。它定义了Leaf类和Composite类的通用函数接口。 2.叶子节点类(Leaf)提供了Component类的接口实现组合模式中的最小单元。 3.组合类(Composite)也提供了Component类的接口实现其中包含多个Component对象。它对子组件进行了封装使用客户端(Client)可以像操作单个组件一样使用整个组合。 对应UML类图 三组合模式代码样例 Demo1先操作叶子节点后操作主节点 #include iostream #include vectorclass Component { public:virtual void operation() const 0;virtual ~Component() {} };class Leaf : public Component { public:Leaf(const std::string name) : name_(name) {}virtual void operation() const override {std::cout Operation on leaf: name_ std::endl;} private:std::string name_; };class Composite : public Component { public:Composite(const std::string name) : name_(name), children_{} {}void add(Component* component) {children_.push_back(component);}void operation() const override {for (const auto child : children_) {child-operation();}std::cout Operation on composite: name_ std::endl;} private:std::vectorComponent* children_;std::string name_; };int main() {Composite root(Composite Root);Leaf leaf1(Leaf 1);Leaf leaf2(Leaf 2);Leaf leaf3(Leaf 3);root.add(leaf1);root.add(leaf2);root.add(leaf3);root.operation();return 0; } 运行结果 Operation on leaf: Leaf 1 Operation on leaf: Leaf 2 Operation on leaf: Leaf 3 Operation on composite: Composite Root Demo2先操作主节点后操作叶子节点 #include iostream #include vectorclass Component { public:virtual ~Component() {}virtual void operation() const 0; };class Leaf : public Component { public:Leaf(const std::string name) : name(name) {}virtual void operation() const override {std::cout Operation on leaf: name \n;} private:std::string name; };class Composite : public Component { public:Composite(const std::string name) : Component(), children(), _name(name) {}void add(Component* component) {children.push_back(component);}void remove(Component* component) {children.erase(std::remove(children.begin(),children.end(),component),children.end());}void operation() const override {std::cout Operation on composite: _name \n;for (auto child : children)child-operation();}private:std::vectorComponent* children;std::string _name; };int main() {Composite root(Composite1);root.add(new Leaf(Leaf1));root.add(new Leaf(Leaf2));root.add(new Composite(Composite2));root.add(new Leaf(Leaf3));root.operation();return 0; } 运行结果 Operation on composite: Composite1 Operation on leaf: Leaf1 Operation on leaf: Leaf2 Operation on composite: Composite2 Operation on leaf: Leaf3 四组合模式的应用场景 平面设计软件开发在Photoshop等应用程序中形状、线条和文本等图形元素可以组合成复杂的设计。 文件系统使用组合模式来表示文件和目录从而形成可以统一处理和查询的分层结构。 UI框架开发基于组合模式可以让UI组件(如按钮、标签和面板等)组合成复杂的布局或界面。 文档编辑器使用组合模式来实现文档的段落和文本等层次结构。 企业软件开发企业软件通常对组织结构进行建模包括部门、团队和员工。组合模式用于实现组织单位及其内部员工的层次结构。 五组合模式的优缺点 组合模式的优点 1.便于维护和重构修改单个组件的代码不会影响整个系统的功能。 2.有树形结构的先天优势可以很方便地统一添加、删除或修改子节点。 3.通过拆分子组件提高了模块间的独立性和可重用性。 4.符合单一职责原则组合中的每个对象只关注自己的职责不需要考虑整个组合中的功能配合。 组合模式的缺点 1.性能开销大该模式涉及了对象的动态创建和管理频繁操作可能会引起性能问题。 2.增加了代码的复杂度当组合的层次过深的时候代码的结构会很复杂。 3.类型安全问题当管理多个组件对象时可能需要额外的类型转换编码。 六代码实战 代码实战基于组合模式实现的文件系统 #include iostream #include bits/stdc.hclass FileSystemComponent { public:virtual void display() const 0; };class File : public FileSystemComponent { public:File(const std::string name, int size): name(name), size(size){}void display() const override{std::cout File: name ( size bytes) std::endl;} private:std::string name;int size; };class Directory : public FileSystemComponent { public:Directory(const std::string name): name(name){}void display() const override{std::cout Directory: name std::endl;for (const auto component : components) {component-display();}}void addComponent(FileSystemComponent* component){components.push_back(component);} private:std::string name;std::vectorFileSystemComponent* components; };int main() {FileSystemComponent* file1 new File(document.txt, 1024);FileSystemComponent* file2 new File(image.jpg, 2048);Directory* directory new Directory(My Documents);directory-addComponent(file1);directory-addComponent(file2);directory-display();return 0; } 运行结果 Directory: My Documents File: document.txt (1024 bytes) File: image.jpg (2048 bytes) 七参考阅读 https://refactoring.guru/design-patterns/composite https://www.geeksforgeeks.org/composite-method-software-design-pattern/ https://www.geeksforgeeks.org/composite-design-pattern-in-java/
http://www.hkea.cn/news/14593025/

相关文章:

  • 高端产品网站建设成都短视频运营
  • 潍坊网站建设平台下载百度软件
  • 做网站站长交加盟费做网站如何选主机
  • 网站充值平台怎么做北京的外包公司有哪些
  • 杨凌企业网站建设企业邮箱注册申请163免费
  • 网站更改模板 seo厦门市住房和城乡建设局网站
  • 企业网站栏目规划的重要性潍坊网站建设求职简历
  • 柳州建设厅官方网站服务态度好的外贸客户搜索软件
  • 桂林龙胜网站建设网站建设 会计分录
  • 山西建设机械网站首页做自己的网站需要多少钱
  • 携程网站建设目的科技部网站建设合同范本
  • php能开发大型网站wordpress社交类主题
  • 电子商务网站建设课件大连培训通网站建设
  • 百度收录网站左侧图片外贸机械网站
  • 周村网站制作价格低网站设计点评
  • 网站怎么做短信接口建行网站关于我们
  • 长沙网站建设制作资讯网站 整体ui
  • 比较大的建站公司个人小白用织梦好还是wordpress好
  • 网站备案 排名影响传奇手游在线玩网页游戏
  • 成都网站推广公司各自的特点是什么
  • 网络宣传网站建设咨询物联网系统设计方案
  • 云南建设厅网站 安全员网站建设公司青岛
  • 网站开发项目总结营销型企业网站建站
  • 专业做全景图的网站平台代码型网页制作软件
  • 敬老院网站建设方案珠海软件开发公司
  • 字体设计灵感网站中国海洋大学做英语作业的网站
  • 建站员工网站做那个男女的视频网站
  • 东莞网站建设制作免费咨织梦建站教程
  • 网站用户体验存在问题长治市住房保障和城乡建设管理局网站
  • 企业网站制作服务器怎么做可以访问网站连接加密