首页 文章 精选 留言 我的
优秀的个人博客,低调大师

微信关注我们

原文链接:https://blog.roncoo.com/article/1170533998458351618

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

设计模式之迭代器模式 引导篇

迭代器模式-引导篇 这两天,比较火的并购新闻就是,网易考拉被阿里以20亿美元收购。从此网易考拉不再姓“网”而姓“阿”了。并购后的网易考拉和阿里的电商系统进行对接。那么问题来了:在阿里有个早餐店的菜单(CakeHouseMenu)使用的事ArrayList来存放菜单的,考拉有个午餐店的菜单(DinerMenu)使用的是数组结构存放的。现在考拉和阿里合并了,两个点的菜单也要合并。 我们先来看看第一版设计: 因为马爸爸说了,国庆之前,必须合并上线,时间紧任务中,肿么办?那就再创建一个对象,使用一个菜单对象,将早餐店对象机午餐店对象作为属性,调用的时候,直接调用各自对象的就可以。类图如下: 顾客来了,点早餐,服务器就从菜单中调用早餐店的get方法。得到KFC早餐套餐 如果点的是午餐,就从菜单中调用午餐店的getMenuItem方法,得到快餐一份。 代码如下: 运行ConventionalMainTest运行结果: 我们可以看到,早餐、午餐菜单也都打印出来了。正常啊,没问题啊。 我们先来看看服务员(waitress)对象里面内容: 从上图中,我们可以看到在服务员对象中有早餐店对象、午餐店对象、l...

组合模式就是几个模式组合一起吗?来看看组合模式原理

组合模式引导篇及组合模式原理 在上一个《迭代器模式》中,我们讲到了阿里收购网易考拉后,店铺合并的问题使用到了迭代器模式。现在又有了新需求。我们先来看看新需求: 先说明:组合模式并非是把之前学过的设计模式组合在一起的一种模式哈。别理解错了。 在原有菜单的基础上,新增餐后甜点功能,如在中餐厅(DinerMenu)中添加餐后甜点。 我们先来回顾下上一个模式下的类图,如下图: 从上图中,我们可以知道,服务员手里拿的菜单遥控器,只是三个iterator 迭代器接口对象。 方案一:也是正常的,最容易想到的方案。 在DinerMenu菜单后面再追加一个子项,用来表示甜点的菜单。如果,我们这样写了。其实最后,还是使用的迭代器模式的。本篇,我们讲解的是组合模式。所以,咱要玩点高大上的。咱使用组合模式来实现这个需求。 我们还可以这么想,将甜点设计成一个数据结构,然后将这个数据结构,放到中餐厅菜单的其中一个菜单下,让甜点菜单成为其子菜单。类图如下: 当我们点击dinnerMenu的第三个item的是,会弹出submenu,这样形式。 如果要实现,上面形式的数据结构,那么我们原有系统会遇到的问题: 一:数据结...

相关文章

发表评论

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册