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

成都网站建设sntuu南京网络优化培训

成都网站建设sntuu,南京网络优化培训,怎么做最火的视频网站,苏州保洁公司开荒保洁收费标准写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 组合模式(Composit…

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。

组合模式(Composite)

是一种行为型模式。

目录

一、概述

1.1、主要的角色有三种:

1.2、直观的理解组合模式:

1.3、技术角度,描述对象之间关系的UML图:

二、举例

2.1、分析如下:

2.2、对象之间的关系用UML图表示如下:

2.3、Java实现代码如下:


一、概述

1、将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性;
2、基本对象可以被组合成更复杂的组合对象,而这个组合对象又可以被组合,这样不断地递归下去,客户代码中,任何用到基本对象的地方都可以使用组合对象了。

1.1、主要的角色有三种:

  1. 组合(或组件)的抽象类或接口
  2. 分支类
  3. 叶子类

1.2、直观的理解组合模式:

其实可以把组合模式当做建立一个树形结构,然后可以对这个树的所有节点进行统一操作,同样这个树还可以根据需要添加删除其它节点或树,从而组成更大的树或更小的树。

1.3、技术角度,描述对象之间关系的UML图:

二、举例

简单举例,如下图所示,我们要实现这个结构,并且打印每个节点的名字。

2.1、分析如下:

1、分析上述问题:

  • 本例比较简单,可以直接看到上述有7个对象,且是一个树形结构(实践中可能需要我们花一点功夫去判断这些对象是否可以应用这种结构)
  • 要打印每一个节点的名字,也就是我们需要对它们进行重复打印的操作
  • 这时可以考虑使用组合模式,将他们看成一个整体,对这个整体进行统一打印的操作

2、针对角色和方法设计上:

组合(或组件)的抽象类或接口

  • 创建一个抽象节点

分支类

  • 本例有三个分支,名字需要分别设置

叶子类

  • 本例有四个叶子,名字需要分别设置

自定义方法:

  • 输出本节点名字

2.2、对象之间的关系用UML图表示如下:

2.3、Java实现代码如下:

组合(组件)的抽象类:

abstract class Component {protected String name;public Component(String name) {this.name = name;}public abstract void add(Component component);public abstract void remove(Component component);public abstract void display(int depth);
}

分支类:

public class Composite extends Component {List<Component> list = new LinkedList<>();public Composite(String name) {super(name);}@Overridepublic void add(Component component) {list.add(component);}@Overridepublic void remove(Component component) {list.remove(component);}@Overridepublic void display(int depth) {for (int i = 0; i < depth; i++) { //每个分支节点自己要干的事情,根据实际需要编写System.out.print("-");}System.out.println(this.name);for (Component component : list) { //遍历此分支节点的子节点,必须要有component.display(depth + 2);}//...}
}

叶子类:

public class Leaf extends Component {public Leaf(String name) {super(name);}@Overridepublic void add(Component component) {System.out.println("叶子节点没有添加子节点功能!");//...}@Overridepublic void remove(Component component) {System.out.println("叶子节点没有删除子节点功能!");//...}@Overridepublic void display(int depth) {for (int i = 0; i < depth; i++) { //每个叶子节点自己要干的事情,根据实际需要编写System.out.print("-");}System.out.println(this.name);//...}
}

 主程序(发起请求的类):

public class Main {public static void main(String[] args) {Composite root = new Composite("root");//创建根节点Leaf leafroot = new Leaf("leafroot");//创建叶子节点Composite compositeA = new Composite("compositeA");//创建分支节点root.add(leafroot);root.add(compositeA);Leaf leafA = new Leaf("leafA");//创建叶子节点Composite compositeAA = new Composite("compositeAA");//创建分支节点compositeA.add(leafA);compositeA.add(compositeAA);Leaf leafAAA = new Leaf("leafAAA");//创建叶子节点Leaf leafAAB = new Leaf("leafAAB");//创建叶子节点compositeAA.add(leafAAA);compositeAA.add(leafAAB);root.display(1);}
}

这里就不再举例了,可以把上面的Java例子复制到你本地,运行main函数试一下加深理解。这些代码都是我自己学习的时候根据一些教材手敲的,不存在bug可以直接运行。

如果觉得本文还不错,就请点个赞吧!如果有建议,也请评论指教和讨论!

http://www.yayakq.cn/news/497945/

相关文章:

  • 网站的营销推广方案集团网站风格
  • 俄罗斯免费网站推广哪些企业网站做的比较好
  • 扫码支付个人商城网站开发免费怎做视频网站
  • 长沙推广网站网站制作软件是什么
  • 中国五大门户网站dw个人网页模板
  • 家具网站建设比较好的大连高新园区范围
  • 做搜狗pc网站优化沧州高端网站建设
  • 常州个人网站建设考试微网站开发
  • 网站建设人员考核wordpress 搜狐
  • 商贸有限公司网站案例江西省赣州市天气预报
  • 专业的网站开发服务国外免费域名注册平台
  • 青岛网站的优化优惠券网站怎么做代理
  • 做网站要注册公司吗怎么在网站里做宣传
  • 网站里的聊天怎么做青岛城阳 软件网站开发
  • 淘宝客怎么做直播网站吗深圳网站建设 设计首选深圳市
  • 国外木屋建设网站百度趋势搜索
  • 2008年做的网站vi设计理念和设计思路
  • 黑龙江省建设工程招标网站wordpress wpautop
  • 泸州住房和城乡建设厅网站首页传媒公司创业
  • 网站开发能用udp协议吗网站版建设
  • 企业网站建设文章中国十大网络公司排名
  • 制作网页网站用的是什么家装设计师培训要多久
  • 旅游电子商务网站建设规划书旅游宣传推广方案
  • 路桥区商用营销型网站建设广西建设工程招标网
  • 响应式网站有哪些杭州网站建设文章
  • 全国建设网站海南网站建设推广公司哪家好
  • 网站服务器租用和自己搭建的区别英文网站设计制作
  • 嘉兴网站建设外包公司高明专业网站建设哪家好
  • 石家庄网站建设制作北京工地网站建设
  • 网站为何不显示百度商桥对话框北京移动端网站优化