实例一:水果盘 在水果盘(Plate)中有一些水果,如苹果(Apple)、香蕉(Banana)、梨子(Pear),当然大水果盘中还可以有小水果盘,现需要对盘中的水果进行遍历(吃),当然如果对一个水果盘执行“吃”方法,实际上就是吃其中的水果。使用组合模式模拟该场景。

public class Apple extends MyElement
{public void eat(){System.out.println("吃苹果!");}
}
public class Banana extends MyElement
{public void eat(){System.out.println("吃香蕉!");}
}
public class Client
{public static void main(String a[]){MyElement obj1,obj2,obj3,obj4,obj5;Plate plate1,plate2,plate3;obj1=new Apple();obj2=new Pear();plate1=new Plate();plate1.add(obj1);plate1.add(obj2);obj3=new Banana();obj4=new Banana();plate2=new Plate();plate2.add(obj3);plate2.add(obj4);obj5=new Apple();plate3=new Plate();plate3.add(plate1);plate3.add(plate2);plate3.add(obj5);plate3.eat();}
}
public abstract class MyElement
{public abstract void eat();
}
public class Pear extends MyElement
{public void eat(){System.out.println("吃梨子!");}
}
import java.util.*;public class Plate extends MyElement
{private ArrayList list=new ArrayList();public void add(MyElement element){list.add(element);  }public void delete(MyElement element){list.remove(element);}public void eat(){for(Object object:list){((MyElement)object).eat();}}
}

组合模式实例与解析 实例一:水果盘相关推荐

  1. 桥接模式实例与解析 实例一:模拟毛笔

    桥接模式实例与解析   实例一:模拟毛笔           现需要提供大中小3种型号的画笔,能够绘制5种不同颜色,如果使用蜡笔,我们需要准备3*5=15支蜡笔,也就是说必须准备15个具体的蜡笔类.而 ...

  2. 组合模式源码解析(jdk+mybatis)

    我们先看一下java.awt.container这么一个类,public class Container extends Component 我们可以看到这个类继承Component,awt这个包下边 ...

  3. 命令模式实例与解析--实例一:电视机遥控器

    电视机是请求的接收者,遥控器是请求的发送者,遥控器上有一些按钮,不同的按钮对应电视机的不同操作.抽象命令角色由一个命令接口来扮演,有三个具体的命令类实现了抽象命令接口,这三个具体命令类分别代表三种操作 ...

  4. 模板方法模式实例与解析--实例一:银行业务办理流程

    在银行办理业务时,一般都包含几个基本步骤,首先需要取号排队,然后办理具体业务,最后需要对银行工作人员进行评分.无论具体业务是取款.存款还是转账,其基本流程都一样.现使用模板方法模式模拟银行业务办理流程 ...

  5. 享元模式实例与解析实例二:共享网络设备(有外部状态)

    实例二:共享网络设备(有外部状态) 虽然网络设备可以共享,但是分配给每一个终端计算机的端口(Port)是不同的,因此多台计算机虽然可以共享同一个网络设备,但必须使用不同的端口.我们可以将端口从网络设备 ...

  6. 迭代器模式实例与解析---实例:电视机遥控器

    电视机遥控器就是一个迭代器的实例,通过它可以实现对电视机频道集合的遍历操作,本实例我们将模拟电视机遥控器的实现. public class Client {public static void dis ...

  7. 装饰模式实例与解析 实例一:变形金刚

    实例一:变形金刚 变形金刚在变形之前是一辆汽车,它可以在陆地上移动.当它变成机器人之后除了能够在陆地上移动之外,还可以说话:如果需要,它还可以变成飞机,除了在陆地上移动还可以在天空中飞翔. publi ...

  8. 组合模式_设计模式结构性:组合模式(CompositePattern)

    组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结构型模式, ...

  9. 组合模式java怎么获取钥匙_java中组合模式详解和使用方法

    组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结构型模式, ...

最新文章

  1. phpstrom+xdebug调试PHP代码
  2. eclipse中egit插件使用
  3. 黑客组织称7月将售新入侵工具 价格超2.2万美元
  4. java链式栈_Java栈之链式栈存储结构实现
  5. SAP S/4HANA使用ABAP获得生产订单的状态
  6. C语言综合期末作业,内蒙古农业大学2010年期末c语言综合作业.doc
  7. Redis ZSet 的几种使用场景
  8. [linux]获取当前文件所在目录的函数
  9. 网站域名过户查询_聚查教你怎么用域名批量查询工具查询网站历史和域名权重...
  10. hdu 1908数据结构水题
  11. 视频录制之音源设置方法:无法录制电脑声音(你听到的声音)
  12. 中国移动基于 Kubernetes 的物联网边缘计算应用实践
  13. 下列关于三种数据交换方式的叙述,错误的是( )
  14. 《指弹:千与千寻:Always with me》
  15. K8S搭建自动化部署环境(三)Jenkins下载、安装和启动
  16. BootStrap4中使用图标
  17. redis 的incr 高并发 原子性计数器
  18. 苏州交管局领导参观闪马智能,考察视频分析交通领域应用
  19. 16、ADS使用记录之AB类功放设计
  20. Dreamweaver CS5网页制作教程

热门文章

  1. 字节面试:谈谈索引为什么能提高查询性能?
  2. net stop mysql 发生系统错误5
  3. 从C#到Python——谈谈我学习Python一周来的体会
  4. 泰拉瑞亚服务器修改物品,泰拉瑞亚1.4自定义物品名称方法 自定义物品名称详细教程_逗游网...
  5. 2020牛客寒假算法基础集训营1 I nico和niconiconi
  6. 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(1月2日)...
  7. 地质灾害监测预警系统解决方案
  8. UL588圣诞灯串测试标准和相关法规
  9. GSM技术类有哪些最新发表的毕业论文呢?
  10. 诺贝尔奖大数据告诉你:最聪明的星座是谁