组合模式涉及的是一组对象,其中一些对象可能含有其他对象,这些对象也可以含有对象,因此,有些对象代表的是对象群组。
Composite模式的设计意图在于:让所有的用户能够用统一的接口处理单个对象以及对象群组
package app.composite;

import java.util.ArrayList;
import java.util.Iterator;
/**
* 类的作用:存在年级和学校,都实现People接口,有输出名字的功能,实现组合模式
* 调用School的getName();获取全校学生的名字
* @author Administrator
*
*/
public class CompositeTest {
public static void main(String[] args) {
School school=new School("前途小学");
Grade grade1=new Grade("一年级");
grade1.add(new Student("小明"));
grade1.add(new Student("小红"));
Grade grade2=new Grade("二年级");
grade2.add(new Student("小亮"));
grade2.add(new Student("小华"));
school.add(grade1);
school.add(grade2);
school.getName();
}
}
//学校
interface People{
public void getName();//获得
}
class Student implements People{
String name;
public Student(String name){
this.name=name;
}
@Override
public void getName() {
System.out.println(this.name);
}
}
class Grade implements People{//年级
private String gradeName; //年级名字
public Grade(String name){
this.gradeName=name;
}
private ArrayList studentList =new ArrayList();
public void add(Student s){
this.studentList.add(s);
}
@Override
public void getName() {
System.out.println("年级:"+this.gradeName);
Iterator it=studentList.iterator();
while(it.hasNext()){
Student student=(Student)it.next();
student.getName();
}
System.out.println();
}
}
class School implements People{
public String schoolName;
public School (String name){
this.schoolName=name;
}
private ArrayList gradeList =new ArrayList();
public void add(Grade g){
this.gradeList.add(g);
}
@Override
public void getName() {
System.out.println("学校:"+this.schoolName);
Iterator it=gradeList.iterator();
while(it.hasNext()){
Grade g=(Grade)it.next();
g.getName();
}
} }

运行结果

学校:前途小学
年级:一年级
小明
小红 年级:二年级
小亮
小华

java实现Composite(组合)模式的更多相关文章

  1. java设计模式之组合模式

    组合模式 组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性.掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 & ...

  2. 一天一个设计模式——Composite组合模式

    一.模式说明 能够使容器与内容物具有一致性,创造出递归结构的模式就是Composite组合模式. 举个例子:计算机中的文件系统中有文件和文件夹的概念,我们知道,文件夹可以包含文件,也可以包含子文件夹, ...

  3. C++设计模式-Composite组合模式

    Composite组合模式作用:将对象组合成树形结构以表示“部分-整体”的层次结构.Composite使得用户对单个对象和组合对象的使用具有一致性. UML图如下: 在Component中声明所有用来 ...

  4. 十一、Composite 组合模式

    原理: 代码清单 Entity public abstract class Entry { public abstract String getName(); public abstract int ...

  5. Composite组合模式(结构型模式)

    1.概述 在面向对象系统中,经常会遇到一些具有"容器性质"的对象,它们自己在充当容器的同时,也充当其他对象的容器. 2.案例 需要构建一个容器系统,需要满足以下几点要求: (1). ...

  6. 设计模式08: Composite 组合模式(结构型模式)

    Composite 组合模式(结构型模式) 对象容器的问题在面向对象系统中,我们常会遇到一类具有“容器”特征的对象——即他们在充当对象的同时,又是其他对象的容器. public interface I ...

  7. JAVA设计模式之组合模式(composite)

    组合模式:树状结构专用模式 代码如下: package com.srr.dp.composite; import java.util.ArrayList; import java.util.List; ...

  8. Composite 组合模式

      简介         <大话设计模式>一书中组合模式的定义为:将对象组合成[树]形结构以表示[部分-整体]的层次结构,组合模式使得用户对[单个对象]和对[组合对象]的使用具有一致性. ...

  9. Composite 组合模式 树 递归 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

随机推荐

  1. 从UnitedStack OS 1.0 Preview试用申请问卷调查学习OpenStack

    http://www.diaochapai.com/survey/ 您的角色最可能是? * (必填, 多选) OpenStack私有云用户,希望能将OpenStack/UOS用于公司内部私有云 云计算 ...

  2. AspNet上传文件的几个控件

    本文转载:http://www.cnblogs.com/downmoon/archive/2009/02/05/1384931.html 1.AspnetUpload 地址:http://www.as ...

  3. CHM文件无法查看内容解决办法

    http://www.cnblogs.com/skey_chen/archive/2011/05/24/2055538.html 从网上下载了一份CHM格式的文档,打开时左侧菜单出来了,但右边显示如下 ...

  4. mysql主从同步单个表实验记录

    问题的提出: 在CRM管理系统与运营基础数据平台之间需要有数据表进行交换,说是交换,其实是单向的,就是CRM里面的一些数据需要实时同步到运营基础数据平台中. 解决方案: A.采用时间戳的办法进行代码开 ...

  5. 你已经毁了JavaScript

    以前 过去我们在页面上用很时尚的方式写了一些确实很可怕的代码,它给我们带来了巨大的麻烦.可能很多人现在还在这样做,但他们不会看这篇博文,我们可以假装他们不存在. JS的伟大/了不起/让人惊讶的地方在于 ...

  6. cdoj 15 Kastenlauf dfs

    Kastenlauf Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/3 De ...

  7. Linux文件时间属性

    Linux文件时间属性                                                                                         ...

  8. Android 和 PHP 之间进行数据加密传输

    Android 和 PHP 之间进行数据加密传输 [代码] [Java]代码 1 mcrypt = new MCrypt(); 2 /* Encrypt */ 3 String encrypted = ...

  9. socket 怎么设置心跳判断连接

    server的代码public abstract class Server { static readonly ILog logger = LogManager.GetLogger(typeof(Se ...

  10. 【JavsScript】父子页面之间跨域通信的方法

    由于同源策略的限制,JavaScript跨域的问题,一直是一个比较棘手的问题,为了解决页面之间的跨域通信,大家煞费苦心,研究了各种跨域方案.之前也有小网同学分享过一篇“跨域,不再纠结” 开始照着尝试时 ...