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

徐州市建设局官方网站app开发流程

徐州市建设局官方网站,app开发流程,北京微网站开发,找人做网站价格🚀简介 组合模式又名部分整体模式,是一种 结构型设计模式 ,是用于把一组相似的对象当作一个 单一的对象 。组合模式 依据树形结构来组合对象 ,用来表示部分以及整体层,它可以让你将对象组合成树形结构,并且…

🚀简介

        组合模式又名部分整体模式,是一种 结构型设计模式 ,是用于把一组相似的对象当作一个 单一的对象 。组合模式 依据树形结构来组合对象 ,用来表示部分以及整体层,它可以让你将对象组合成树形结构,并且能 像使用独立对象一样使用它们 这种模式定义了包含人和组的类,每个组都可以包含人或者是其他的组。这样的结构可以有效地代表大的和复杂的层次结构。

 

        🐤如上图,是我们常见的 文件系统 ,对于这样的结构我们称之为 树形结构 。在树形结构中可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可以对叶子节点进行相关的操作。可以将这颗树理解成一个大的容器, 容器 里面 包含很多的成员对象 ,这些成员对象即可是容器对象也可以是叶子对象。但是由于容器对象和叶子对象在功能上面的区别,使得我们在使用的过程中必须要区分容器对象和叶子对象,但是这样就会给客户带来不必要的麻烦,作为客户而已,它始终希望能够一 致的对待容器对象和叶子对象

👻角色

组合模式主要包含三种角色:
  1. 抽象根节点(Component):定义系统各层次对象的共有方法和属性,可以预先定义一些默认行为和属性。
  2. 树枝节点(Composite):定义树枝节点的行为,存储子节点,组合树枝节点和叶子节点形成一个树形结构。
  3. 叶子节点(Leaf):叶子节点对象,其下再无分支,是系统层次遍历的最小单位。

🐳与我们上图中文件系统图例对应

  • 抽象根节点 = 最顶部的文件夹
  • 树枝节点 = 文件夹
  • 叶子节点 = 文件

🚀案例

不管是菜单还是菜单项,都应该继承自统一的接口,这里我们创建一个抽象组件,定义一些通用的方法,如添加,删除,打印。

public abstract class Component
{protected string _name;public Component(string name){_name = name;}public abstract void Add(Component c);public abstract void Remove(Component c);public abstract void Display(int depth);
}

🚀树枝节点Composite

定义一个名为children的List类型的列表,用于存储Component类型的子元素,Add方法和Remove方法分别用于向children列表中添加和移除Component类型的对象。Display方法用于显示Composite对象的信息。这个方法首先打印出当前Composite对象的深度和名称,然后遍历children列表,对每个子元素调用Display方法。这样就形成了一种递归的结构,可以用来表示树形结构。

public class Composite : Component
{private List<Component> children = new List<Component>();public Composite(string name): base(name){}public override void Add(Component component){children.Add(component);}public override void Remove(Component component){children.Remove(component);}public override void Display(int depth){Console.WriteLine(new String('-', depth) + _name);foreach (Component component in children){component.Display(depth + 2);}}
}

🚀叶子节点Leaf

因为叶子节点已经是最下级了,因此我们只需要在Display直接重写打印方法,并且不需要再进行遍历了

public class Leaf : Component
{public Leaf(string name): base(name){}public override void Add(Component c){Console.WriteLine("Cannot add to a leaf");}public override void Remove(Component c){Console.WriteLine("Cannot remove from a leaf");}public override void Display(int depth){Console.WriteLine(new String('-', depth) + _name);}
}

🐳测试

class MyClass
{public static void Main(string[] args){// 创建一个根节点Component root = new Composite("root");// 创建两个节点Component node1 = new Composite("node1");Component node2 = new Composite("node2");// 创建叶子节点Component leaf1 = new Leaf("leaf1");Component leaf2 = new Leaf("leaf2");Component leaf3 = new Leaf("leaf3");// 构建树形结构root.Add(node1);root.Add(node2);node1.Add(leaf1);node2.Add(leaf2);node2.Add(leaf3);// 显示树形结构root.Display(1);}
}

运行结果!在这个例子中,我们首先创建了一个根节点root,然后创建了两个节点node1node2,以及三个叶子节点leaf1leaf2leaf3。然后我们将node1node2添加到root下,将leaf1添加到node1下,将leaf2leaf3添加到node2下,从而构建了一个树形结构。

🚀总结

👻优点

  1. 组合模式可以清楚地定义分层次的复杂对象,表示对象的全部或部分层次,它让客户端忽略了层次的差异,方便对整个层次结构进行控制。
  2. 客户端可以一致地使用一个组合结构或其中单个对象,不必关心处理的是单个对象还是整个组合结构,简化了客户端代码。
  3. 在组合模式中增加新的树枝节点和叶子节点都很方便,无须对现有类库进行任何修改,符合开闭原则
  4. 组合模式为树形结构的面向对象实现提供了一种灵活的解决方案,通过叶子节点和树枝节点的递归组合,可以形成复杂的树形结构,但对树形结构的控制却非常简单。

👻缺点

        在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。

👻使用场景

        组合模式正是应树形结构而生,所以组合模式的使用场景就是出现树形结构的地方。比如:文件目录显示,多级目录呈现等树形结构数据的操作。

http://www.hkea.cn/news/656976/

相关文章:

  • 网页 代码怎么做网站东莞市民最新疫情
  • 电子商务网站设计中影响客户体验的元素有搜索引擎有哪些种类
  • 网站建设难点优化关键词技巧
  • 免费行情网站链接百度知道合伙人官网
  • 餐饮公司网站建设的特点大数据智能营销
  • 济南快速排名刷关键词排名seo软件
  • 系统做网站的地方百度推广登录后台登录入口
  • 集约化网站建设情况广告公司网站制作
  • 网站制作发票字节跳动广告代理商加盟
  • 义乌做网站武汉seo推广优化公司
  • 济宁哪家网站建设公司正规谷歌浏览器 免费下载
  • 有没有女的做任务的网站广东省新闻
  • seo长尾关键词优化如何做网站推广优化
  • 网站搭建服务合同seo排名赚
  • 东莞有什么比较好的网站公司苏州关键词排名系统
  • 做中国供应商免费网站有作用吗浙江网站推广运营
  • mysql8 wordpress百度推广优化是什么意思
  • 做装修广告网站好seo推广公司招商
  • 城市模拟建设游戏网站今天最新的新闻头条新闻
  • 手机网站自适应代码品牌网络营销策划方案
  • 个人网站建设在哪里百度资源搜索平台
  • 云空间免费空间北京网站优化校学费
  • 个人网站做导航网站项目推广平台有哪些
  • 威海住房建设局网站培训学校资质办理条件
  • 做趣味图形的网站免费线上培训平台
  • 女生做网站前端设计师成都网站seo
  • 濮阳建设银行官方网站搜索引擎优化的对比
  • 完全删除wordpressseo小白入门
  • 做网站常用到的css标签什么软件可以找客户资源
  • 有做销售产品的网站有哪些新闻头条今日新闻