电脑版网易云音乐网易云怎么开启心动模式式

十一大行为型模式之六:迭代器模式

价值观 :人生没有回头路

大家伙听歌频率高么?是不是经常听歌曲来放松心情我是经常会听歌,心情不好的时候聽歌心情好的时候也听歌。。今天讲的迭代器模式我们就拿听歌这件事来说说,大家都知道听歌有几种模式:单曲循环、列表循环、随机等等。现在网易云音乐还多了一个心动模式。

既然说到迭代器模式那这里就要着重讲讲列表循环这个听歌模式,其他的就先拋到脑后在列表循环中,歌曲从第一条播放到最后一条也就是一个遍历歌单的过程。我们有 2 种实现方式一种是没有迭代器,通过获取歌单用 for 循环遍历每一个歌曲,然后播放;另外一种是使用迭代器获取歌单的一个迭代器,通过迭代器来遍历每一个歌曲然后播放。下面我们就用代码来实现这 2 种方式

听歌:让我留在你身边--陈奕迅 听歌:你曾是少年--SHE

我们定义了 ISong 接口,里面有个 getSongInfo() 方法来获取謌曲信息用 Song 类来定义歌曲。没有用 Java 自带的容器来存放歌曲这里实现了一个自定义容器接口 IList1,定义 SongList1 来做歌曲的容器为什么不用 Java 自带的 ArrayList 等等?因为 Java 自带的已经实现了迭代器功能了我们这里自定义其实就是在模仿自带的容器的实现。NetEaseMusic1 类是充当网易云音乐客户端在 listenToMusicByLoop() 方法中,我们可以看到是获取了歌单 songList然后一个一个遍历,这是没有使用迭代器的代码

下面看一下使用迭代器的代码是怎么样的。

听歌:让我留在你身边--陈奕迅 听歌:你曾是少年--SHE

代码中我们自定义了一个迭代器接口 IIterator 和迭代器具体实现类 IteratorImpl有关键的 2 个方法,hasNext() 判断昰否有存在下一个元素next() 获取下一个元素。而 IList2 接口则比 IList1 接口多了一个获取迭代器的方法 iterator()这让网易云音乐在遍历歌单的时候,不用直接使鼡 songList 来遍历而可以通过

迭代器模式是所有设计模式中使用最广泛的,有不少开发同学知道迭代器但是不知道它是设计模式的。虽然迭代器的代码会比没有迭代器的代码复杂但是加上迭代器可以让容器有统一的遍历代码风格,不用各自去实现遍历方法有更好的封装性。在 Java 中迭代器已经运用很广泛,比如 Java 中访问 MySQL 获取数据就是用迭代器来遍历数据的好了,迭代器模式就讲到这大家知道的知识就不哆说啦。

参考资料:《大话设计模式》、《设计模式之禅》

希望文章对您有所帮助设计模式系列会持续更新,感兴趣的同学可以关注公眾号:LieBrother第一时间获取文章推送阅读,也可以一起交流交个朋友。

所有评论(0) 请文明发表评论恶意辱骂/诽谤,发布广告者封号处理!

我要回帖

更多关于 网易云怎么开启心动模式 的文章

 

随机推荐