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

中国个人优秀网站成都网站建设交易

中国个人优秀网站,成都网站建设交易,做图软件ps下载网站,滕州网站建设制作组合模式介绍一棵树结构组合模式是把相似对象或方法组合成一组可被调用的结构树对象的设计思路。组合模式不只是可以运用于规则决策树#xff0c;还可以做服务包装将不同的接口进行组合配置#xff0c;对外提供服务能力#xff0c;减少开发成本。组合模式的主要解决的是一系… 组合模式介绍一棵树结构组合模式是把相似对象或方法组合成一组可被调用的结构树对象的设计思路。组合模式不只是可以运用于规则决策树还可以做服务包装将不同的接口进行组合配置对外提供服务能力减少开发成本。组合模式的主要解决的是一系列简单逻辑节点或者扩展的复杂逻辑节点在不同结构的组织下对于外部的调用是仍然可以非常简单的。组合模式的结构组件  接口描述了树中简单项目和复杂项目所共有的操作。叶节点 是树的基本结构它不包含子项目。一般情况下叶节点最终会完成大部分的实际工作因为它们无法将工作指派给其他部分。容器   又名组合是包含叶节点或其他容器等子项目的单位。容器不知道其子项目所属的具体类它只通过通用的接口与其子项目交互。容器接收到请求后会将工作分配给自己的子项目处理中间结果然后将最终结果返回客户端。客户端  通过组件接口与所有项目交互。因此客户端能以相同方式与树状结构中的简单或复杂项目交互。组合模式的应用场景当业务是需要实现树状对象结构可以使用组合模式。组合模式提供两种共享公共接口的基本元素类型简单叶节点和复杂容器。容器中可以包含叶节点和其他容器。这样就可以构建树状嵌套递归对象结构。当希望客户端代码以相同方式处理简单和复杂元素可以使用组合模式组合模式中定义的所有元素共用同一个接口。正式由于这接口客户端不必在意其所使用的对象的具体类。组合模式的优缺点优点1、可以利用多态和递归机制更方便地使用复杂树结构2、开闭原则无需更改现有代码就可以在应用中添加新元素使其成为对象树的一部分。缺点1、对于功能差异大的类提供公共接口或许会有困难。实现方式1、确保应用的核心模型能够以树状结构表示尝试将其分解为简单元素和容器。其中容器必须同时包含简单元素和其他容器。2、声明组件接口及其一系列方法这些方法对简单和复杂元素都有意义。3、创建一个叶节点类表示简单元素程序中可以有多个不同的叶节点类。4、创建一个容器类表示复杂元素。在该类中创建一个数组成员变量来存储对于其子元素的引用。该数组必须能够同时保存叶节点和容器因此请确保将其声明为组合接口类型。实现组件接口方法时记住容器应该将大部分工作交给其子元素来完成。5、在容器中定义添加和删除子元素的方法。这些操作可在组件接口中声明。会违背“接口隔离原则”因为叶节点类中的这些方法为空。但是可以让客户端无差别地访问所有元素即使是组成树状结构的元素。Demo    /// summary/// 为简单对象和复杂对象声明了通用操作/// /summaryabstract class Component{public Component() {}/// summary/// 操作变量/// /summary/// returns/returnspublic abstract string Operation();public virtual void Add(Component component) {throw new NotImplementedException();}public virtual void Remove(Component component) {throw new NotImplementedException();}/// summary/// 是否是复合/// /summary/// returns/returnspublic virtual bool IsComposite() {return true;}}/// summary/// 叶/// /summaryclass Leaf:Component{public override string Operation(){return Leaf;}public override bool IsComposite(){return false;}}/// summary/// 复合对象(里面既包含叶又包含小复合对象)/// /summaryclass Composite:Component{protected ListComponent _children  new ListComponent();public override void Add(Component component){this._children.Add(component);}public override void Remove(Component component){this._children.Remove(component);}public override string Operation(){int i  0;string result  包含的分支都有那些;foreach (var component in _children){result  component.Operation();if(i!_children.Count-1){result  ;}i;}return result  );}}/// summary/// 客户端/// /summaryclass Client{/// summary/// 组件调用接口   叶子调用/// /summary/// param nameleaf/parampublic void ClientCode(Component leaf) {Console.WriteLine(Resultleaf.Operation());}/// summary/// 在基组件类中客户端可以与任何组件简单和复杂的对象交互不依赖具体的类/// /summary/// param namec1/param/// param namec2/parampublic void ClientCode2(Component c1,Component c2){if (c1.IsComposite()){c1.Add(c2);}Console.WriteLine(Resultc1.Operation());}}class Program{static void Main(string[] args){Client client  new Client();Leaf leaf  new Leaf();Console.WriteLine(调用叶子......);client.ClientCode(leaf);Console.WriteLine(---------------);Composite tree  new Composite();Composite branch1  new Composite();branch1.Add(new Leaf());branch1.Add(new Leaf());Composite branch2  new Composite();branch2.Add(new Leaf());tree.Add(branch1);tree.Add(branch2);Console.WriteLine(调用复杂对象......);client.ClientCode(tree);Console.WriteLine(---);client.ClientCode2(tree,leaf);Console.ReadKey();}} 计算结果显示从计算结果可以看出当第一次只调用叶子时结果就只显示叶子也就是简单元素当第二次声明实例化复杂容器(包含叶子和别的容器)时输出结果也可以把所有声明实例的容器中的所有叶子和子容器都输出显示。其实对于我们业务来说需要把握好业务的逻辑看到底需要并适合那种模式这样才能不为了模式而模式代码。小寄语人生短暂我不想去追求自己看不见的我只想抓住我能看的见的。我是阿辉感谢您的阅读如果对你有帮助麻烦点赞、转发  谢谢。
http://www.zqtcl.cn/news/777370/

相关文章:

  • 农庄网站模板网络文化经营许可证图片
  • 微信做模板下载网站有哪些内容江苏省常州建设高等职业技术学校网站
  • 网站开发补充合同范本docker 部署wordpress
  • 学会了php的语法怎么做网站海外推广媒体
  • 东莞网站建设排行企业网站开发公司大全
  • wordpress商城必备软件重庆seo优化推广
  • 蚌埠百度做网站山东省无障碍网站建设标准
  • 平乡企业做网站流量精灵官网
  • 厦门做网站优化公司wordpress cx-udy
  • 做外汇门户网站WordPress推广返佣插件
  • c语言在线编程网站学生个人网页设计作品
  • 南阳网站排名优化报价wordpress视频付费
  • 政务新网站建设ipv6改造wordpress
  • 店招免费设计在线生成网站seo优化关键词快速排名上首页
  • 毕设做系统与网站答辩wordpress个人模板
  • 农家乐网站建设wordpress改变访问目录结构
  • 单位网站建设的重要性盐城城南建设局一局网站
  • 网站登录验证码显示不出来刘强东当年做网站读的什么书
  • 网站seo优化步骤动态ip可以做网站
  • 用自己电脑怎么做网站广州公司建站
  • 购物网站前端浮动特效怎么做常用开发工具
  • 网页设计与制作精品课程网站wordpress文章页禁止右键
  • 英迈思做网站做的怎样中国建设银行官方网站纪念币
  • 最专业的手机网站建设厦门建设厅网站
  • 贵州省建设工程质量检测协会网站c 网站开发类似优酷
  • 关于网站建设申请卢沟桥做网站的公司
  • 网站源码对应的数据库怎么做单页成品网站
  • 网站分为哪几类上海人才网官网招
  • 网站建设的常见技术有哪些方面网站联系我们模块怎么做
  • 外贸网站建设专业上海四大设计院是哪四个