外观模式(二)

2014-11-24 07:13:24 · 作者: · 浏览: 1
别笑我小 别笑我孬 \n"
+ "风吹雨打之后依然不倒 \n" + "动荡的大地之中落地生根\n" + " 苦难的时代之中不屈不挠...");
// 水手 -- 郑智化
lyrics.put("水手", "苦涩的沙吹痛脸庞的感觉 \n" + "像父亲的责骂母亲的哭泣 \n"
+ "永远难忘记 年少的我喜欢一个人在海边 \n" + "卷起裤管光着脚丫踩在沙滩上 \n"
+ "总是幻想海洋的尽头有另一个世界 \n" + "总是以为勇敢的水手是真正的男儿 \n"
+ "总是一副弱不禁风孬种的样子 \n" + "在受人欺负的时候总是听见水手说 \n" + "他说风雨中这点痛算什么 \n"
+ "擦干泪不要怕至少我们还有梦 \n" + "他说风雨中这点痛算什么 擦干泪不要问为什么...");
}
private MusicUtils() {
}
/**
* 按照歌名查找歌词
* @param musicName
* @return
*/
public static String getLyricByName(String musicName) {
return lyrics.get(musicName);
}
}
现在子系统都构建好了,这些歌曲我们一首一首的切换也是可以的,但这样久了也会烦的,索性我们就安装了一个酷狗音乐播放器:
KuGouMusic:
[java]
/**
* 酷狗音乐播放器,相当于一个高层接口
* @author PingCX
*
*/
public class KuGouMusic {
//用于存储音乐的,便于随机和顺序播放取出音乐
private Map musics;
// 下载好的音乐,相当于各个子 系统
private OldBoy oldBoy;
private Grass grass;
private Sailor sailor;
public KuGouMusic() {
oldBoy = new OldBoy("老男孩");
grass = new Grass("小草");
sailor = new Sailor("水手");
musics = new HashMap();
musics.put(1, oldBoy);
musics.put(2, grass);
musics.put(3, sailor);
}
/**
* 顺序播放
*/
public void orderPlay() {
int index = 1;
while (index < musics.size() + 1) {
musics.get(index++).play();
System.out.println("----------------");
}
}
/**
* 随机播放
*/
public void randomPlay() {
int index;
while(true){
index = new Random().nextInt(3) + 1;
musics.get(index).play();
System.out.println("----------------");
}
}
}
@巧妇难为无米之炊,注意我们一定要给酷狗放上音乐,所以有几个成员变量。
@用了一个了List集合,方便演示的顺序播放和随机播放时取出歌曲。
我一开始是顺序播放:
[java] view plaincopy
public class Client {
public static void main(String[] args) {
//此时用户只需怎么使用酷狗音乐播放器就行了,而不需要手动去切换那些歌曲,降低了对歌曲的依赖性
KuGouMusic kuGouMusic = new KuGouMusic();
//顺序播放
kuGouMusic.orderPlay();
//随机播放
// kuGouMusic.randomPlay();
}
}