JAVA策略模式例子

    xiaoxiao2021-03-25  99

    /** * * ClassName: 华语经典 <br/> * Function: TODO ADD FUNCTION. <br/> * Reason: TODO ADD REASON(可选). <br/> * @version */ public class ChineseClassics extends NeteaseCloudMusicSongSheet { @Override public String getS_code() { return "WYYHYJD_GD_7231"; } @Override public String getS_name() { return "华语经典 "; } @Override public String getS_cdate() { return "2017-03-01"; } @Override public String getS_songRows() { return "16首"; } @Override public String getS_face() { return "images\001"; } }

    一个音乐播放器有很多歌单,我们点击一个歌单就会进入开始循环列表播放里面的歌曲

    使用策略模式播放歌单,让用户来回切换:

    以上的子类(华语经典)继承下面这个抽象父类

         

    import java.util.List; /** * * ClassName: 网易云音乐歌单 <br/> * Function: TODO ADD FUNCTION. <br/> * Reason: TODO ADD REASON(可选). <br/> * @version */ public abstract class NeteaseCloudMusicSongSheet { private String s_code;//歌单编号 private String s_name;//歌单名 private String s_cdate;//歌单创建时间 private String s_songRows;//收录歌曲数量 private String s_face;//封面 public String getS_code() { return s_code; } public void setS_code(String s_code) { this.s_code = s_code; } public String getS_name() { return s_name; } public void setS_name(String s_name) { this.s_name = s_name; } public String getS_cdate() { return s_cdate; } public void setS_cdate(String s_cdate) { this.s_cdate = s_cdate; } public String getS_songRows() { return s_songRows; } public void setS_songRows(String s_songRows) { this.s_songRows = s_songRows; } public String getS_face() { return s_face; } public void setS_face(String s_face) { this.s_face = s_face; } }

    再添加一个歌单

    /** * * ClassName: 歌单-影视原声 <br/> * Function: TODO ADD FUNCTION. <br/> * Reason: TODO ADD REASON(可选). <br/> * @version */ public class TelevisionOriginalSound extends NeteaseCloudMusicSongSheet{ @Override public String getS_code() { return "WYYYSYS_GD_3521"; } @Override public String getS_name() { return "影视原声"; } @Override public String getS_cdate() { return "2017-03-10"; } @Override public String getS_songRows() { return "21首"; } @Override public String getS_face() { return "images\121"; } }

    然后编写播放程序

    /** * * ClassName: 播放服务 <br/> * Function: TODO ADD FUNCTION. <br/> * Reason: TODO ADD REASON(可选). <br/> * @version */ public class PlayServer { //进入歌单选项列表 private NeteaseCloudMusicSongSheet neteaseCloudMusicSongSheet; public PlayServer(NeteaseCloudMusicSongSheet _neteaseCloudMusicSongSheet) { this.neteaseCloudMusicSongSheet = _neteaseCloudMusicSongSheet; } //开始播放 public void playStart(){ System.out.println("====您已进入该歌单,开始循环播放列表下的所有歌曲===="); System.out.println("编号:" + neteaseCloudMusicSongSheet.getS_code()); System.out.println("歌单名:" + neteaseCloudMusicSongSheet.getS_name()); System.out.println("封面:" + neteaseCloudMusicSongSheet.getS_face()); System.out.println("收录歌曲数量:" + neteaseCloudMusicSongSheet.getS_songRows()); System.out.println("创建时间:" + neteaseCloudMusicSongSheet.getS_cdate()); } } 测试

    import java.util.Scanner; public class MainTest { public static void main(String[] args) { Scanner sc=new Scanner(System.in); NeteaseCloudMusicSongSheet n=null; PlayServer p=null; while(true){ System.err.println("\n请点击(输入歌单编号)如:【WYYYSYS_GD_3521】或【WYYHYJD_GD_7231】"); String str=sc.next(); switch (str) { case "WYYYSYS_GD_3521": n=new TelevisionOriginalSound(); p=new PlayServer(n); break; case "WYYHYJD_GD_7231": n=new ChineseClassics(); p=new PlayServer(n); break; default: break; } p.playStart(); } } }

    转载请注明原文地址: https://ju.6miu.com/read-22332.html

    最新回复(0)