`
amanhu
  • 浏览: 12891 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

迭代器模式与组合模式(一) —— Head First设计模式学习

 
阅读更多

首先,我们有三个类,分别代表“菜单项”,“对象村餐厅菜单”和“对象村煎饼屋菜单”。

菜单类:

对象村煎饼屋菜单:

对象村餐厅菜单:

由于对象村餐厅和煎饼屋合并后,煎饼屋提供早餐,而餐厅提供午餐。需要一个女招待Alice。

Alice 的工作如下:

printMenu()

--打印出菜单上的每一项

printBreakfastMenu()

--只打印早餐项

printLunchMenu()

--只打印午餐项

printVegetarianMenu()

--打印所有的素食菜单项

isItemVegetarian(name)

--制定项的名称,如果是素食的话,返回true,否则返回false

以下是我们女招待的实现类:

在该类只实现了printMenu方法,其他方法与printMenu方法类似,都要循环遍历两个菜单项。如果,还有第三家餐厅合并,就需要三个循环遍历。

printMenu()的实现,会有以下几个问题:

  1. 针对接口编程,而非针对实现编程。printMenu()的实现是针对PancakeHouseMenu和DinerMenu的具体代码实现编码。
  2. 如果我们还有另一种菜单项用Hashtable来存放,我们会因此需要修改女招待中的许多代码。
  3. 女招待需要知道每个菜单如何表达内部的菜单项集合,这违背了封装。
  4. 重复代码比较多,printMenu()方法中需要两个循环,来遍历两种不同的菜单。如果还有第三种菜单,我们就需要第三个循环。

对此,我们应该如何处理呢?

分享到:
评论

相关推荐

    Head First 设计模式 (九) 迭代器与组合模式(Iterator & Composite pattern) C++实现

    迭代器模式(Iterator Pattern)和组合模式(Composite Pattern)是设计模式中的两种重要结构型模式,它们在软件设计中有着广泛的应用。这两种模式都属于GoF(Gang of Four)设计模式,旨在解决特定的问题,提升代码...

    Head First设计模式(完整高清版).pdf

    《Head First设计模式》是一本深受开发者喜爱的经典书籍,它以独特且易于理解的方式介绍了设计模式这一复杂的概念。设计模式是软件开发中的经验总结,是解决常见问题的有效模板,可以帮助我们编写更灵活、可维护和可...

    Headfirst(九)迭代器模式

    总的来说,Headfirst的第九章通过迭代器模式的讲解,让读者了解如何在C++中使用这种模式,同时通过UML类图帮助理解类与类之间的关系,使得设计模式的学习更加直观易懂。掌握迭代器模式,对于编写高效、可维护的代码...

    HeadFirst 组合模式+迭代器错误原因以及解决代码

    《HeadFirst JAVA设计模式》中利用迭代器迭代组合模式存在错误,课本中实现代码对于大于两层的树状测试数据存在错误(即Menu里有Menu),这里给出原错误测试代码(compositeIter包)和错误解决代码(solveIter包)。

    [中文]Head-First设计模式.pdf

    《Head-First设计模式》是一本面向初学者的优秀设计模式教程,主要针对Java编程语言。这本书通过易于理解的方式介绍了23种经典的GoF设计模式,帮助开发者提升代码的可复用性和可维护性。设计模式是软件工程中的重要...

    Head First设计模式和HeadFirst in java 源码以及23种设计模式关系图

    总的来说,这个压缩包包含的资源可以帮助你深入理解设计模式,通过《HeadFirst设计模式》和《HeadFirst in Java》的源码,你可以学习到如何在实际项目中应用这些模式。而UML类图则提供了直观的视角,便于你把握设计...

    head first设计模式学习代码

    《Head First设计模式学习代码详解》 设计模式是软件工程中的宝贵经验总结,它提供了一套通用的解决方案模板,帮助开发者在面对复杂问题时能够快速有效地进行设计和开发。Head First设计模式是一本非常受欢迎的设计...

    Head.First设计模式_PDF

    《Head First设计模式》是一本深受开发者欢迎的设计模式学习书籍,以其独特的教学方式,通过丰富的图解和幽默的叙述,使复杂的设计模式概念变得生动易懂。这本书主要讲解了面向对象设计中的23种经典设计模式,是软件...

    Head First设计模式 源代码

    《Head First设计模式》是一本深受开发者喜爱的设计模式学习书籍,它以易懂、生动的方式讲解了23种经典的设计模式。源代码是书中理论知识的实践体现,可以帮助读者更深入地理解并应用这些模式。这里我们将围绕这些...

    [中文]Head-First设计模式

    《Head-First设计模式》是设计模式领域内一本广受欢迎的入门书籍,以其独特的视觉呈现方式和易懂的讲解风格,让初学者也能快速理解并掌握设计模式的精髓。设计模式是软件工程中的一种最佳实践,是解决常见编程问题的...

    HeadFirst设计模式JAVA版源码

    《HeadFirst设计模式JAVA版源码》是一份深入学习设计模式的重要资源,它基于流行的编程语言Java,旨在帮助开发者理解并应用设计模式于实际项目中。设计模式是软件工程中的重要概念,它代表了在特定场景下解决问题的...

    HeadFirst设计模式英文版

    《Head First 设计模式》的英文版是一本面向初学者的设计模式入门书籍,它以幽默风趣的文风,深入浅出地介绍了软件设计中经常使用的设计模式。设计模式是一套被反复使用、多数人知晓、经过分类编目、代码设计经验的...

    HeadFirst设计模式源码

    《HeadFirst设计模式》是一本深受开发者欢迎的设计模式学习书籍,它以易懂且生动的方式讲解了23种经典的设计模式。源码包包含了书中所有示例代码,这对于理解和实践这些设计模式至关重要。这里我们将详细探讨设计...

    headfirst设计模式

    《Head First设计模式》是一本深受开发者欢迎的设计模式教程,以其独特的视觉呈现方式和易于理解的语言,让初学者也能快速掌握设计模式的核心概念。这本书深入浅出地介绍了23种GOF(GoF,Gamma、Erich、Johnson、...

    Head First设计模式(含目录)

    《Head First设计模式》是一本深受程序员喜爱的书籍,它以独特的方式讲解了设计模式这一核心的编程概念。设计模式是软件开发中的经验总结,是解决常见问题的有效模板,可以帮助开发者编写可维护、可扩展、易理解的...

    Head First设计模式官方原码

    《Head First设计模式》是一本深受开发者欢迎的设计模式学习书籍,以其独特的教学方式,通过丰富的图解和幽默的语言,帮助读者深入理解设计模式的核心概念。这本书的官方源码提供了书中所讲解的每个设计模式的实际...

    head first 设计模式,英文版

    《Head First设计模式》是一本深受开发者欢迎的设计模式教程,英文版为读者提供了全面而深入的理解,适合那些对设计模式充满兴趣并愿意投入精力去学习的朋友们。设计模式是软件工程中的重要概念,它们是解决常见问题...

    Head First 设计模式 源代码(完整)

    《Head First 设计模式》是软件开发领域内一本广受欢迎的书籍,它以直观易懂的方式介绍了23种经典的设计模式。这些模式是解决软件设计中常见问题的成熟方案,被广泛应用于Java、C++、Python等编程语言中。源代码提供...

    HeadFirst设计模式(中文高清版)

    《HeadFirst设计模式》是一本深受开发者喜爱的设计模式学习书籍,中文高清版的出现使得国内读者可以更加方便地理解和掌握这一领域的重要知识。设计模式是软件工程中经过长期实践总结出来的一种解决常见问题的可复用...

    Head First 设计模式 扫描版

    《Head First 设计模式》是软件开发领域内一本广受欢迎的书籍,由Eric Freeman、Elisabeth Robson、Bert Bates和Kathy Sierra四位作者共同撰写。这本书以其独特的视觉风格和易于理解的教学方法,深入浅出地介绍了...

Global site tag (gtag.js) - Google Analytics