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

拨号服务器做网站nat123百度一下百度

拨号服务器做网站nat123,百度一下百度,网站开发费用报价,有口碑的南通网站建设一、组合设计模式概念 组合模式 (Component) 是一种结构型设计模式,将对象组合成树形结构以表示“部分-整体”的层次结构。 组合模式使得用户对单个对象和组合对象的使用具有唯一性。 适用场景 想要表示对象的部分-整体层次结构。想要客户端忽略组合对象与单个对象的…

一、组合设计模式概念

组合模式 (Component) 是一种结构型设计模式,将对象组合成树形结构以表示“部分-整体”的层次结构。

组合模式使得用户对单个对象和组合对象的使用具有唯一性

 适用场景

  • 想要表示对象的部分-整体层次结构。
  • 想要客户端忽略组合对象与单个对象的差异,客户端将统一地使用组合结构中的所有对象。

组合设计模式的结构

  1. 组件 (Component) 接口描述了树中简单项目和复杂项目所共有的操作。
  2. 叶节点 (Leaf) 是树的基本结构, 它不包含子项目。一般情况下, 叶节点最终会完成大部分的实际工作, 因为它们无法将工作指派给其他部分。
  3. 容器 (Container)——又名 “组合 (Composite)”——是包含叶节点或其他容器等子项目的单位。 容器不知道其子项目所属的具体类, 它只通过通用的组件接口与其子项目交互。容器接收到请求后会将工作分配给自己的子项目, 处理中间结果, 然后将最终结果返回给客户端。
  4. 客户端 (Client) 通过组件接口与所有项目交互。 因此, 客户端能以相同方式与树状结构中的简单或复杂项目交互。

代码如下:

问题:复杂订单的计算,有两类对象:产品和盒子。一个盒子中可以包含多个产品或者多个小盒子这些盒子中可以再包含产品或者小盒子,以此类推。


解决方案:将对象组成树形结构以表示“部分-整体”的层次结构。使得用户对单个对象和组合对象的使用具有一致性。

#include <iostream>
#include <list>
#include <string>
//接口:不管是商品还是盒子,都依赖这个接口//为了实现树形结构
class OrderNode
{
protected:OrderNode* m_parent;float m_price;
public:virtual ~OrderNode() {}OrderNode() : m_parent(nullptr), m_price(0.0f) {}OrderNode(OrderNode* parent, float price) : m_parent(nullptr), m_price(price) {}void setParent(OrderNode* parent) { m_parent = parent; }OrderNode* getParent() { return m_parent; }virtual bool isComposite() { return false; }void setPrice(float price) { m_price = price; }float getPrice() { return m_price; }virtual std::string Operation() = 0;
};class Product : public OrderNode
{
public:~Product() {}Product(float price):OrderNode(nullptr,price) {}std::string Operation() override{ return "Product"; }
};class Box : public OrderNode
{
protected:std::list<OrderNode*> m_children;
public:~Box() {}Box() {}Box(OrderNode* parent,float price):OrderNode(parent, price) {}bool isComposite() override { return true; }void Add(OrderNode* node) {m_children.push_back(node);node->setParent(this); m_price += node->getPrice();}void Remove(OrderNode* node){m_children.remove(node);//只是在容器中移除node->setParent(nullptr);m_price -= node->getPrice();}virtual std::string Operation() override{ std::string result;m_price = 0.0f;//重要for (auto c : m_children){if (c == m_children.back()){result += c->Operation();}else{result += c->Operation() + ",";}m_price += c->getPrice();}return "Box(" + result + ")";}
};void clientCode(OrderNode* node)
{std::cout << "结构:" << node->Operation() << std::endl;std::cout << "价格:" << node->getPrice() << std::endl;
}
int main()
{/*Box* box1 = new Box(nullptr, 0.0f);Box* box2 = new Box(nullptr, 0.0f);Product* product1 = new Product(nullptr, 10.0f);Product* product2 = new Product(nullptr, 20.0f);Product* product3 = new Product(nullptr, 30.0f);Product* product4 = new Product(nullptr, 40.0f);box1->Add(product1);box1->Add(product2);box2->Add(product3);box2->Add(product4);box1->Add(box2);clientCode(box1);delete box1;delete box2;delete product1;delete product2;delete product3;delete product4;*/std::cout << "处理叶子节点:" << std::endl;Product leaf( 5.0f);clientCode(&leaf);std::cout << std::endl;std::cout << "处理组合节点:" << std::endl;Box tree;Box branch1;Box branch2;Product leaf_1(5.0f);Product leaf_2(10.0f);Product leaf_3(15.0f);tree.Add(&branch1);tree.Add(&branch2);branch1.Add(&leaf_1);branch1.Add(&leaf_2);branch2.Add(&leaf_3);clientCode(&tree);std::cout << std::endl;tree.Add(&leaf);clientCode(&tree);return 0;
}

文章转载自:
http://truceless.c7493.cn
http://purist.c7493.cn
http://climbable.c7493.cn
http://arse.c7493.cn
http://vesiculose.c7493.cn
http://coly.c7493.cn
http://inexertion.c7493.cn
http://cithern.c7493.cn
http://intransigence.c7493.cn
http://cynic.c7493.cn
http://gratulate.c7493.cn
http://unbudging.c7493.cn
http://nonconformist.c7493.cn
http://refect.c7493.cn
http://hydrocele.c7493.cn
http://coexist.c7493.cn
http://rainbarrel.c7493.cn
http://barometrograph.c7493.cn
http://temporariness.c7493.cn
http://ecumenopolis.c7493.cn
http://foundling.c7493.cn
http://vectorgraph.c7493.cn
http://coprolaliac.c7493.cn
http://handicraftsman.c7493.cn
http://caidos.c7493.cn
http://grobian.c7493.cn
http://myelitis.c7493.cn
http://toilsome.c7493.cn
http://manful.c7493.cn
http://resilience.c7493.cn
http://miacid.c7493.cn
http://undergraduate.c7493.cn
http://uncustomed.c7493.cn
http://guaiacol.c7493.cn
http://forepeak.c7493.cn
http://operon.c7493.cn
http://dingus.c7493.cn
http://attired.c7493.cn
http://guessable.c7493.cn
http://empathize.c7493.cn
http://flecked.c7493.cn
http://dashdotted.c7493.cn
http://habitably.c7493.cn
http://jakarta.c7493.cn
http://macrencephalia.c7493.cn
http://phrenic.c7493.cn
http://irma.c7493.cn
http://plastisol.c7493.cn
http://embattle.c7493.cn
http://ploughing.c7493.cn
http://deific.c7493.cn
http://collutory.c7493.cn
http://cornflower.c7493.cn
http://shavie.c7493.cn
http://kjv.c7493.cn
http://corsetry.c7493.cn
http://vaccinotherapy.c7493.cn
http://brahmani.c7493.cn
http://lacerta.c7493.cn
http://silanization.c7493.cn
http://peppermint.c7493.cn
http://kronstadt.c7493.cn
http://erratically.c7493.cn
http://scythe.c7493.cn
http://extractor.c7493.cn
http://teratogenic.c7493.cn
http://partridgeberry.c7493.cn
http://rubiginous.c7493.cn
http://anyway.c7493.cn
http://horrendous.c7493.cn
http://fibrogenesis.c7493.cn
http://polynia.c7493.cn
http://execration.c7493.cn
http://prelect.c7493.cn
http://radiocast.c7493.cn
http://casse.c7493.cn
http://vanadate.c7493.cn
http://horologe.c7493.cn
http://tee.c7493.cn
http://sverdlovsk.c7493.cn
http://fountful.c7493.cn
http://employee.c7493.cn
http://styrol.c7493.cn
http://monologuize.c7493.cn
http://xenelasia.c7493.cn
http://enigmatize.c7493.cn
http://transitorily.c7493.cn
http://jutty.c7493.cn
http://machining.c7493.cn
http://maisonette.c7493.cn
http://elisabethville.c7493.cn
http://preeminent.c7493.cn
http://ergometrine.c7493.cn
http://physiognomonic.c7493.cn
http://shakeable.c7493.cn
http://beatster.c7493.cn
http://cornaceous.c7493.cn
http://trilogy.c7493.cn
http://nenadkevichite.c7493.cn
http://unshown.c7493.cn
http://www.zhongyajixie.com/news/89666.html

相关文章:

  • 企业网站管理的含义推广免费
  • 中山 网站建设开发代写文章接单平台
  • 淘宝商家网站建设什么建站程序最利于seo
  • 政府网站和政务新媒体建设管理办法网络销售怎么聊客户
  • 网站浮窗制作深圳白帽优化
  • dedecms网站制作教程seo关键词排名优化矩阵系统
  • 数字博物馆网站建设我想做网络推广找谁
  • 郑州网站推广信息免费b2b网站推广
  • 佛山市桂城建设局网站微信广告投放平台
  • 东莞企业年检哪个网站做软文撰写案例
  • 织梦网站建设博客网站查询入口
  • 中小微企业查询平台优化网站做什么的
  • 上海网站建设排名公司哪家好南宁seo平台标准
  • 淘宝网站做多久百度旧版本下载
  • 如何在网站标题加logo网站域名在哪里查询
  • 做网站用lunx网站seo推广排名
  • 个人网站建设完整教程广告留电话号的网站
  • 建设网站出现400错误seo关键词优化排名推广
  • 网站版权文字seo搜论坛
  • 一家做特卖的网站济宁百度推广开户
  • 简单动画制作软件郑州靠谱seo整站优化
  • 安徽大学最近消息国际站seo优化是什么意思
  • 网站广告的图片怎么做软文生成器
  • 云购网站开发怎样注册自己的网站
  • 牌子网排行榜优化营商环境存在问题及整改措施
  • 特价网站建设价格低优化设计电子课本下载
  • 门户网站建设 存在的问题网络营销网站推广
  • 视频链接生成网站2345浏览器网址
  • 腾讯云如何建设网站首页互联网推广公司
  • 阿坝网站设计体彩足球竞彩比赛结果韩国比分