Android库中的架构设计

时间:2016-06-29 03:04:46

标签: android architecture

我设计了一个Android库,可以很容易地向用户显示媒体内容库。我设计了三层架构:

  • 数据:包含用于表示和访问实际内容库的模型。
  • 商业:使用数据模型对内容进行排序(例如按专辑,艺术家),并将排序后的内容提供给表示层。
  • 演示文稿:向用户显示已排序的内容,并在用户选择要播放的内容时反馈给业务层。

图书馆的核心理念是,每个媒体对象都可以通过显示标题,副标题和艺术作品图像来显示。为此,数据模型的主要组成部分是'DisplayableMedia'接口,定义为:

public interface DisplayableMedia {
    CharSequence getTitle();
    CharSequence getSubtitle();
    Bitmap getArtwork();
}

通过简单地定义标题,副标题和插图,这允许向用户显示任何类型的媒体(歌曲,电影,流等)。然后,只需要为表示层提供要显示的DisplayableMedia对象的集合,并且可以对显示的实际媒体带来不可知。例如,歌曲可能被定义为:

public class Song implements DIsplayableMedia {
    private final File fileOnDisk;

    public Song(File fileOnDisk) {
        this.fileOnDisk = fileOnDisk;
    }

    @Override
    public CharSequence getTitle() {
        // access the file metadata and return the song title
    }

    @Override
    public CharSequence getSubtitle() {
        // access the file metadata and return the song artist
    }

    public Bitmap getArtwork() {
        // access the file metadata and return the cover art
    }
}

这是一个糟糕的高级设计吗?数据层是否更好地提供对各种元数据的通用访问,以便业务层可以告诉表示层要显示哪些信息?

0 个答案:

没有答案