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

网站开发综合实训心得杭州建设银行网站

网站开发综合实训心得,杭州建设银行网站,漂亮的html静态页面,免费建立手机网站#x1f680;简介 组合模式又名部分整体模式#xff0c;是一种 结构型设计模式 #xff0c;是用于把一组相似的对象当作一个 单一的对象 。组合模式 依据树形结构来组合对象 #xff0c;用来表示部分以及整体层#xff0c;它可以让你将对象组合成树形结构#xff0c;并且…简介 组合模式又名部分整体模式是一种 结构型设计模式 是用于把一组相似的对象当作一个 单一的对象 。组合模式 依据树形结构来组合对象 用来表示部分以及整体层它可以让你将对象组合成树形结构并且能 像使用独立对象一样使用它们 。这种模式定义了包含人和组的类每个组都可以包含人或者是其他的组。这样的结构可以有效地代表大的和复杂的层次结构。 如上图是我们常见的 文件系统 对于这样的结构我们称之为 树形结构 。在树形结构中可以通过调用某个方法来遍历整个树当我们找到某个叶子节点后就可以对叶子节点进行相关的操作。可以将这颗树理解成一个大的容器 容器 里面 包含很多的成员对象 这些成员对象即可是容器对象也可以是叶子对象。但是由于容器对象和叶子对象在功能上面的区别使得我们在使用的过程中必须要区分容器对象和叶子对象但是这样就会给客户带来不必要的麻烦作为客户而已它始终希望能够一 致的对待容器对象和叶子对象 。 角色 组合模式主要包含三种角色 抽象根节点Component定义系统各层次对象的共有方法和属性可以预先定义一些默认行为和属性。 树枝节点Composite定义树枝节点的行为存储子节点组合树枝节点和叶子节点形成一个树形结构。 叶子节点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 ListComponent children new ListComponent();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然后创建了两个节点node1和node2以及三个叶子节点leaf1leaf2和leaf3。然后我们将node1和node2添加到root下将leaf1添加到node1下将leaf2和leaf3添加到node2下从而构建了一个树形结构。 总结 优点 组合模式可以清楚地定义分层次的复杂对象表示对象的全部或部分层次它让客户端忽略了层次的差异方便对整个层次结构进行控制。 客户端可以一致地使用一个组合结构或其中单个对象不必关心处理的是单个对象还是整个组合结构简化了客户端代码。 在组合模式中增加新的树枝节点和叶子节点都很方便无须对现有类库进行任何修改符合“开闭原则”。 组合模式为树形结构的面向对象实现提供了一种灵活的解决方案通过叶子节点和树枝节点的递归组合可以形成复杂的树形结构但对树形结构的控制却非常简单。 缺点         在使用组合模式时其叶子和树枝的声明都是实现类而不是接口违反了依赖倒置原则。 使用场景         组合模式正是应树形结构而生所以组合模式的使用场景就是出现树形结构的地方。比如文件目录显示多级目录呈现等树形结构数据的操作。
http://www.w-s-a.com/news/616348/

相关文章:

  • 原创先锋 北京网站建设网站开发电脑内存要多少
  • 婚恋网站建设项目创业计划书网站建设 食品
  • 免费建网站代码查询做导员的网站
  • 做网站的软件电子可以看女人不易做网站
  • 学校响应式网站模板下载仙居住房和城乡建设规划局网站
  • 推广网站的方法有拍卖网站建设
  • 网站建设网站排名优化中国网站服务器哪个好
  • asp网站应用程序网站建设需要提供的资料
  • 网站开发与设计.net微信小程序设计制作
  • 怎样做网站排名优化展馆设计费取费标准一览表
  • 网站建设去哪可接单网站建设与设计大作业
  • 休闲咖啡厅网站开发目标韩国小清新网站模板
  • 做微景观的网站制作网页模板适应不同分辨率
  • 最简单的网站系统昨天军事新闻最新消息
  • 做ps网页设计的网站有哪些wordpress内容付费
  • 有没有免费注册域名的网站科技小制作 手工 简单
  • 网站支付端口win10优化大师怎么样
  • 怎么做云购网站吗网站流量监测
  • 网站被恶意刷流量可以翻外墙的浏览器
  • 网站做直链下载存储解决方案怎么把网站设置为主页面
  • 西安做网站招聘深圳网站见
  • 网站怎么做优化百度能搜索到wordpress 子分类
  • 六安网站建设培训制作网站需要多少时间
  • 电子商务专业网站建设什么软件可以做动画视频网站
  • wordpress 分享主题做网站优化有必要
  • ftp 网站管理电商网站设计图片
  • 惠州免费建站模板营销型旅游网站建设
  • 南宁cms建站wordpress 开启缩略图
  • 网站模板软件网站admin密码
  • 网站信息做参考文献射阳做企业网站多少钱