`

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

阅读更多

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

 

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);
 

 

分享到:
评论

相关推荐

    《进场和出场——参观 16 间交易室》.pdf

    这样的内容设计让读者能够深入了解交易者如何根据市场变化制定策略,并执行有效的风险管理。这本作品的内容可以大致分为三个部分:交易策略的介绍、交易室访问实录、以及基于实践的交易经验总结。 首先,在交易策略...

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

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

    Java编码规范及实践

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

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

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

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

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

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

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

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

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

    信息时代下书籍装帧设计课程多元化教学模式探讨.pdf

    因此,深入探讨信息时代下书籍装帧设计课程的多元化教学模式,对于培养具备现代设计思维和实践能力的设计师具有重要的现实意义。 首先,将传统文化元素融入课程,是提升学生设计作品深度与个性的重要途径。中国传统...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    工学一体化教学模式在楼宇智能化系统安装与调试课程教学中的应用.pdf

    其次,通过模拟真实的工作场景,学生能够扮演不同的角色,如设计师、施工人员、管理者等,在角色扮演的过程中,学生能够提升团队协作能力、沟通协调能力和问题解决能力。再次,工学一体化教学模式能促进师生间的有效...

Global site tag (gtag.js) - Google Analytics