`

设计模式快速参考-参观者模式

阅读更多

参观者模式主要对一组固定结构的对象进行访问,一般和组合模式一起使用。

 

abstract class Hardware{
   protected double price;
   protected double getPrice();
   void accept(IComputerVisitor visitor);
}

class Mainboard extends Hardware{
   void accept(IComputerVisitor visitor){
      visitor.visitMainboard(this);
   }
}

class Memory extends Hardware{
   void accept(IComputerVisitor visitor){
      visitor.visitMemory(this);
   }
}

class Display extends Hardware(
   void accept(IComputerVisitor visitor){
      visitor.visitDisplay(this);
   }
}

class NetworkAdapter extends Hardware{
   void accept(IComputerVisitor visitor){
      visitor.visitNetworkAdapter(this);
   }
}

class Computer extends Hardware[
   private List<Hardware> parts = new Arraylist();
   public List<Hardware> add(Hardware hardware){
      parts.add(hardware);
      return parts;
   }
   public void accept(IComputerVisitor visitor){
      for(Hardware h: parts){
         h.accept(visitor);
      }
   }
}

interface IComputerVisitor{
   void visitMainboard(Mainboard mainboard);
   void visitNetworkAdapter(NetworkAdapter adapter);
   void visitDisplay(Display display);
   void visitMemory(Memory memory);
}

//遍历 computer 的每个部件,汇总价格
class PriceVisitor implements IComputerVisitor{
   //总价格
   private double amountPrice;
   void visitMainboard(Mainboard mainboard){
      amountPrice += mainboard.getPrice();
   }
   void visitNetworkAdapter(NetworkAdapter adapter) {
      amountPrice += adapter.getPrice();
   }
   void visitDisplay(Display display) {
      amountPrice += display.getPrice();
   }
   void visitMemory(Memory memory) {
      amountPrice += memory.getPrice();
   }
}


 


Client:

 

Computer computer = new Computer();
Mainboard mainboard = new Mainboard();
NetworkAdapter networkAdapter = new NetworkAdapter();
Display display = new Display();
Memory memory = new Memory();
computer .add(mainboad)
         .add(networkAdapter)
         .add(display)
         .add(memory);
IComputerVisitor visitor = new PriceVisitor();
visitor.accept(computer);
 

 

分享到:
评论

相关推荐

    2021-2022收藏的精品资料2018博物馆旅游市场运营模式分析及投资机会分析报告目录.docx

    ### 博物馆旅游行业创新发展必然性分析 #### 1.1 博物馆旅游行业发展特性 ##### 1.1.1 博物馆旅游的内涵 博物馆旅游是指以参观博物馆为主要活动的一种旅游形式...这对于推动我国博物馆旅游的发展具有重要的参考价值。

    Java编码规范及实践

    - **参观者模式**:表示一个作用于某对象结构中的各元素的操作。 了解这些设计模式有助于开发者更好地解决实际问题,并编写出更加灵活和可扩展的代码。 #### 七、代码重构 最后,“代码重构”章节讨论了如何通过...

    精品资料(2021-2022年收藏)物业公司参观学习总结报告.doc

    1. 物业管理学习与参观:该文档描述了一次物业管理团队的参观学习活动,参与者前往武汉某知名物业公司,目的是了解并学习其先进的物业管理经验和运作模式。 2. 物业管理先进模式:xx物业公司采用的管理模式是矩阵式...

    行业文档-设计装置-可变式新媒体音响.zip

    在商业展示中,它能根据展览主题变换音效,增强参观者的互动体验。 文档可能还包含了案例研究,分析了具体项目中可变式新媒体音响的应用效果和用户反馈,以证明其在实际应用中的价值和创新性。同时,对于设计师和...

    行业文档-设计装置-3D多媒体互动虚拟沙盘.zip

    在展览展示中,3D互动沙盘可以吸引参观者的注意力,提高展览的吸引力;在教育训练中,它可以用于地理教学、军事演练等,提供安全且可重复的模拟环境。 “3D多媒体互动虚拟沙盘.pdf”可能是一份详细的技术文档或案例...

    基于WSN的智能交互系统设计

    该系统能够实时捕获参观者的位置信息,通过信号处理和无线传输,与参观者进行互动。 在系统设计中,有几个关键的技术点: 1. **多路传感器信号的采集与处理**:系统需要集成多种类型的传感器,如红外传感器,用于...

    java编码规范——关于java的命名规则、注视的写法等

    #### 六、设计模式快速参考 第七章提供了对常见设计模式的简要介绍和示例,有助于开发者更好地解决特定问题。 ##### 7.1 工厂模式 - **简单工厂**:提供一个创建产品对象的静态方法。 - **工厂方法**:定义一个...

    个人总结:发明专利说明书参考模板

    ### 个人总结:发明专利说明书参考模板 #### 技术领域 本发明主要聚焦于展览行业中对参展人员消费偏好的调查分析方法与系统,特别强调利用RFID(射频识别)技术自动化获取参展人员消费偏好信息。 #### 背景技术 ...

    3D多元化数字空间虚拟展营销方案

    - **数据收集分析**:收集参观者的行为数据,如点击、浏览时间等,为企业分析参观者的偏好提供有价值的参考信息。 综上所述,3D多元化数字空间虚拟展营销方案凭借其高度的沉浸感、互动性和灵活性,在当前数字化转型...

    上海世博会照明科技的创新设计与应用

    在这场盛会上,照明科技扮演了极其重要的角色,通过各种创新的设计与应用,为参观者带来了前所未有的视觉享受。本文将详细探讨上海世博会期间照明科技的应用案例,揭示其背后的科技原理及设计理念,为未来的城市照明...

    21春南开大学《旅行社经营管理》在线作业-1参考答案.docx

    3. **旅行社销售渠道模式**:旅游经营商通过旅行代理商销售产品给旅游者,这属于多层次旅行社销售渠道模式,这种模式允许旅行社通过多种渠道扩大市场覆盖面。 4. **旅行社分社的选址**:旅行社分社的地理区位选择可...

    夕觉素材-编号02.pptx

    这些研究成果可能涉及到了数字化技术如何重塑传统博物馆的展示方式,以及如何通过创新设计提升参观者的体验感和互动性。 在数字化博物馆的设计中,空间艺术形态展示模式是关键。它可能涵盖了虚拟现实、增强现实等...

    职业院校单片机课程一体化教学模式的探索与实践.pdf

    职业院校在单片机课程的教学模式上,通常面临课堂教学效果不理想、工程应用性不强等问题。为了改善这一局面,相关教育工作者们提出了...这种教学模式的探索与实践,对于职业院校单片机课程的发展具有重要的参考价值。

    “概念设计”理论在展示空间设计的应用.doc

    在这个过程中,设计师可能会预设一个主题,就像讲述一个故事,通过这个故事来引导参观者的体验,使他们能够更好地理解和记住展示的信息。 接下来是【概念的渲染】阶段,这是将初步的概念具体化和深化的过程。设计师...

    上海新天地商业模式探讨.pptx

    新天地的成功不仅在于其建筑设计的创新,更在于其商业模式的巧妙运用。 1. **项目概况** 上海新天地的投资总额约为1.5亿美元,1999年初开始建设,2000年6月完成新天地广场的一期工程,2001年9月正式对外营业。占地...

    农业科技展览馆智能服务机器人的方案设计.pdf

    在农业科技展览馆中,智能服务机器人的应用越来越广泛,其设计旨在为公众提供全面的服务功能,同时提高农业科技展览馆的效率和参观者的体验。本文提出了一种智能服务机器人的设计构想,这种机器人结合了多种先进技术...

    报告-项目管理流程分享材料.pptx

    - 销售流程初步固化,项目运作采用“巴展-高层互访-样板点参观”模式。 - 地区部-代表处和地区系统部组成的双矩阵组织结构确立。 - “铁三角”体系形成,推动员工专业化发展。 #### 3. 农耕时代 (2015-2020年) -...

    5760平方米现代农业示范园设计及预算.doc

    设计与预算的目的是构建一个展示农业发展趋势的平台,让参观者了解现代农业的现状和未来方向,从而激发对农业美好前景的期待。 综上所述,这份5760平方米现代农业示范园的设计与预算文件全面涵盖了从温室设计、...

    东财《旅游规划学》20春单元作业一参考答案.docx

    ### 东财《旅游规划学》20春单元作业一参考答案 #### 旅游规划的重点 1. **项目设计**(A):在旅游规划中,项目设计是基础且核心的部分,它涉及到具体旅游产品的构思与设计,如景点建设、体验活动策划等。 2. **...

Global site tag (gtag.js) - Google Analytics