软件架构

主要模块

名字 模块
爬虫 common.crawler
设置 common.config.Config
音乐库 common.library.Library
主界面 View.main_window.MainWindow
播放器 components.media_player.MediaPlayer
播放列表 components.media_player.MediaPlaylist
事件总线 common.signal_bus.SignalBus
元数据管理 common.meta_data

界面结构

主界面

../_static/images/%E7%95%8C%E9%9D%A2%E7%BB%93%E6%9E%84.png

选择模式界面

Groove 音乐中大多数界面的结构如下图所示,由 viewSelectionModeBar 组成: ../_static/images/%E9%80%89%E6%8B%A9%E6%A8%A1%E5%BC%8F%E7%95%8C%E9%9D%A2.jpg

由于 SelectionModeBar 种类多样,代码中使用工厂模式来创建 SelectionModeBar,这样可以增强代码的可拓展性: ../_static/images/%E9%80%89%E6%8B%A9%E6%A8%A1%E5%BC%8F%E6%A0%8F%E7%B1%BB%E5%9B%BE.png

选择模式界面的类图如下所示,SelectionModeInterface 的子类使用 setView(view) 方法更换视图为专辑卡视图、歌曲列表部件、歌手卡视图或者播放列表卡视图,这些视图都实现了 SelectionModeViewBase 的两个抽象方法: ../_static/images/%E9%80%89%E6%8B%A9%E6%A8%A1%E5%BC%8F%E7%95%8C%E9%9D%A2%E7%B1%BB%E5%9B%BE.png

以专辑卡视图为例,AlbumCardViewBase 通过 AlbumCardFactory 创建各种类型的专辑卡,由于专辑卡视图有网格布局和水平布局两种,所以相应地有 GridAlbumCardViewHorizonAlbumCardView 子类: ../_static/images/%E4%B8%93%E8%BE%91%E5%8D%A1%E8%A7%86%E5%9B%BE%E7%B1%BB%E5%9B%BE.png