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