组合设计模式2
来源:互联网 发布:下载个视频软件 编辑:程序博客网 时间:2024/05/17 08:28
/** * 在某些情况下,数据呈树形,但是每个树节点节点的类型不一定相同 * 这种情况下可以构建抽象的父类让各节点的类型继承, * 再利用组合设计模式进行构造数据 * @author * @version 0.1 */abstract class MusicClass { public String name; public ArrayList<MusicClass> list; //抽象的添加方法 public abstract void add(MusicClass component); //抽象的删除方法 public abstract void remove(MusicClass component); //展示所有子节点 public abstract void display();}class Song extends MusicClass{ //使用组合模式,请构造Song类,歌曲:+name public Song(){} public Song(String name){ this.name = name; } //重写父类添加方法 @Override public void add(MusicClass component) { list.add(component); } //重写父类删除方法 @Override public void remove(MusicClass component) { list.remove(component); } //重写父类展示方法 @Override public void display() { Iterator<MusicClass> iterator = list.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next().name); } }}class ConcreteMusicClass extends MusicClass{ //使用组合模式,构造ConcreteMusicClass类,并打印歌手名称 public ConcreteMusicClass (){ } public ConcreteMusicClass(String name){ this.name = name; this.list = new ArrayList<MusicClass>(); } //重写父类添加方法 @Override public void add(MusicClass component) { list.add(component); } //重写父类删除方法 @Override public void remove(MusicClass component) { list.remove(component); } //重写父类展示方法 @Override public void display() { Iterator<MusicClass> iterator = list.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next().name); } }}public class CompositeTest { public static void main(String args[]){ //创建Song类型的子节点 Song song1=new Song("七里香"); Song song2=new Song("东风破"); //创建ConcreteMusicClass类型的子节点 ConcreteMusicClass concreteMusicClassZhou=new ConcreteMusicClass("周杰伦"); Song song3=new Song("我的歌声里"); Song song4=new Song("jar of love"); ConcreteMusicClass concreteMusicClassQu=new ConcreteMusicClass("曲婉婷"); //创建root节点 ConcreteMusicClass root=new ConcreteMusicClass("root"); concreteMusicClassZhou.add(song1); concreteMusicClassZhou.add(song2); concreteMusicClassQu.add(song3); concreteMusicClassQu.add(song4); root.add(concreteMusicClassZhou); root.add(concreteMusicClassQu); root.display(); }}
阅读全文
0 0
- 组合设计模式2
- 设计模式(2) ------------组合模式
- php设计模式(组合模式2)
- 设计模式:组合模式
- 设计模式-----组合模式
- 设计模式 组合模式
- 设计模式--组合模式
- 设计模式---组合模式
- 【设计模式】组合模式
- 设计模式 - 组合模式
- 设计模式----组合模式
- 设计模式 - 组合模式
- 设计模式:组合模式
- 设计模式 - 组合模式
- 设计模式-组合模式
- 设计模式 - 组合模式
- 【设计模式】组合模式
- 设计模式--组合模式
- Invalid bound statement (not found)
- POJ 1262 Input 笔记
- libvirt-使用iso镜像创建主机&修改启动盘&启动
- 大话设计模式阅读笔记-简单工厂方法
- python模块以及导入出现ImportError: No module named 'xxx'问题
- 组合设计模式2
- 带你一步步走入Paxos的世界 -- 序列2
- Ubuntu16.04+caffe+Opencv3+Python(CPU ONLY)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.2面向对象技术(4.2.6)
- 第四周(1)——图文消息实现网页链接服务
- ubuntu安装谷歌拼音输入法, ubuntu 软件更新源 source.list, package无法找到安装,ubuntu system setting问题: ubuntu desktop 安装
- java实现剪刀石头布功能
- .emacs.d server unsafe
- 【算法题】插入排序