java实现Composite(组合)模式
- 组合模式涉及的是一组对象,其中一些对象可能含有其他对象,这些对象也可以含有对象,因此,有些对象代表的是对象群组。
- 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(组合)模式的更多相关文章
- java设计模式之组合模式
组合模式 组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性.掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 & ...
- 一天一个设计模式——Composite组合模式
一.模式说明 能够使容器与内容物具有一致性,创造出递归结构的模式就是Composite组合模式. 举个例子:计算机中的文件系统中有文件和文件夹的概念,我们知道,文件夹可以包含文件,也可以包含子文件夹, ...
- C++设计模式-Composite组合模式
Composite组合模式作用:将对象组合成树形结构以表示“部分-整体”的层次结构.Composite使得用户对单个对象和组合对象的使用具有一致性. UML图如下: 在Component中声明所有用来 ...
- 十一、Composite 组合模式
原理: 代码清单 Entity public abstract class Entry { public abstract String getName(); public abstract int ...
- Composite组合模式(结构型模式)
1.概述 在面向对象系统中,经常会遇到一些具有"容器性质"的对象,它们自己在充当容器的同时,也充当其他对象的容器. 2.案例 需要构建一个容器系统,需要满足以下几点要求: (1). ...
- 设计模式08: Composite 组合模式(结构型模式)
Composite 组合模式(结构型模式) 对象容器的问题在面向对象系统中,我们常会遇到一类具有“容器”特征的对象——即他们在充当对象的同时,又是其他对象的容器. public interface I ...
- JAVA设计模式之组合模式(composite)
组合模式:树状结构专用模式 代码如下: package com.srr.dp.composite; import java.util.ArrayList; import java.util.List; ...
- Composite 组合模式
简介 <大话设计模式>一书中组合模式的定义为:将对象组合成[树]形结构以表示[部分-整体]的层次结构,组合模式使得用户对[单个对象]和对[组合对象]的使用具有一致性. ...
- Composite 组合模式 树 递归 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
随机推荐
- 5.迪米特法则(Law Of Demeter)
1.定义 狭义的迪米特法则定义:也叫最少知识原则(LKP,Least Knowledge Principle).如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用.如果其中的一个类需要 ...
- php中curl不支持https的解决办法
在php程序中使用curl去访问https站点时,报错:Protocol https not supported or disabled in libcurl 该错误信息表示php当时编译时使用的cu ...
- JS瀑布流布局模式(1)
在实际的项目中,偶尔会用到一种布局——瀑布流布局.瀑布流布局的特点是,在多列布局时,可以保证内容区块在水平方向上不产生大的空隙,类似瀑布的效果.简单的说,在垂直列表里,内容区块是一个挨着一个的.当内容 ...
- linux文档编辑
编辑某个文档: 可以直接编辑的如你有文档aa,可以用vi aa [注意:必须在AA所在的目录下]: 如果没有文档而且你又想编辑就可以直接编辑vi aa[名字你可以随便命名]; 也可以先建立一个文档to ...
- windows下如何github ssh 公钥
windows下如何github ssh 公钥 1. 安装git,从程序目录打开 "Git Bash" 2. 键入命令:ssh-keygen -t rsa -C " ...
- 终端I/O之stty命令
所有的终端选项标志,在程序中都可用tcgetattr和tcsetattr函数(http://www.cnblogs.com/nufangrensheng/p/3576682.html)进行检查和更改. ...
- 浅谈 qmake 之 pro、pri、prf、prl文件
尽管每次和cmake对比起来,我们总是说 qmake 简单.功能少.但是qmake仍然是一个非常复杂的东西,我想大多人应该和我一样吧: 不是太清楚CONFIG等变量到底如何起作用的 用过的qmake内 ...
- 微软发布屏蔽Win10升级的官方办法
微软发布屏蔽Win10升级的官方办法 导读 微软似乎从来就没有像现在这么焦燥过,当然了,攸关生死,他要还是能"蛋"定得住,那才真叫怪了.你看,为了推广Windows 10,一向傲娇 ...
- 网络传输速度bps与下载文件所需时间的换算
相信很多同志都非常关注自己家的计算机上网的宽带是多少.关心单位上网的宽带是多少! 但是很多同志都经常误解网络传输速度,以至于责备网络接入商(电信.网通.铁通等单位)欺骗用户,限制上网的速度! 本文,就 ...
- tachyon 命令行接口
Usage: tachyon COMMAND where COMMAND is one of: format [-s] 格式化Format Tachyon (如果指定 -s 参数,表示在 underf ...