组合模式涉及的是一组对象,其中一些对象可能含有其他对象,这些对象也可以含有对象,因此,有些对象代表的是对象群组。
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. CXF 与Spring整合配置

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java ...

  2. CentOS7安装telnet服务

    CentOS7.0 telnet-server 启动的问题.解决方法:    ①.先检查CentOS7.0是否已经安装以下两个安装包:telnet-server.xinetd.命令如下:    rpm ...

  3. 通俗理解C#委托和事件

    引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去 ...

  4. 使用visual studio 2013 快速搭建phonegap开发环境

    前一段时间开发了一款简单的Phonegap应用,遇到了很多坑,其中有一个坑就是在搭建开发环境上.由于Phonegap 2.x 与3.x 区别比较大,导致了开发环境也有所不同.2.x 是这样的http: ...

  5. Java虚拟机工作原理具体解释

    一.类载入器 首先来看一下java程序的运行过程. 从这个框图非常easy大体上了解java程序工作原理.首先,你写好java代码,保存到硬盘其中.然后你在命令行中输入 javac YourClass ...

  6. DP之矩阵连乘问题

    最优二叉查找树的一道思考习题 同最优二叉查找树一样,矩阵连乘问题也是一个卡特兰数问题(其动态规划的构造过程都很像) 分析解答: a,铺垫的数学知识首先要搞清楚矩阵相乘是怎么乘的: 1)对于连续的n个矩 ...

  7. mysql优化之连接优化(open-files-limit与table_open_cache)

    MySQL打开的文件描述符限制 Can't open file: '.\test\mytable.frm' (errno: 24) OS error code : Too many open file ...

  8. iPhone重绘机制drawRect

    如何使用iPhone进行绘图.重绘操作iPhone的绘图操作是在UIView类的drawRect方法中完成的,所以如果我们要想在一个UIView中绘图,需要写一个扩展UIView 的类,并重写draw ...

  9. linux shell “(())” 双括号运算符使用

    导读 在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算.估计很多朋友都感觉比较难以接受.特变逻辑运算符"[]"使用时候,必须保证运算符与算数 之间有空格 ...

  10. ubuntu桌面版打开终端Terminal的几种方法

    1. Ctrl + Alt + T 快捷键直接打开2. 在Ubuntu左上角选择File/Open in Terminal 3. 快捷键alt+F2调出Run a Command,输入gnome-te ...