听音乐

目前市场上主流的音乐播放器有QQ音乐、网易云音乐、酷狗音乐、酷我音乐等。

20200709081249.png

不同的人听音乐使用的播放器可能会不同。我们可能会选择其中一种音乐播放器来听音乐,请看下面的代码:

if ($type == 1) {    $player = new QQPlayer();} else if ($type == 2) {    $player = new WyPlayer();} else if ($type == 3) {    $player = new KGPlayer();}$player->on();  // 打开播放器$player->choiceMusic('思念是一种病');  // 选择歌曲$player->play();  // 开始播放

如果这个时候,我们想加入酷我音乐播放器或者觉得可以淘汰网易云音乐了(听不了周杰伦的歌),那么就需要修改该程序了(需要修改条件分支了)。所以,这样的代码是不好维护的。

写程序有一个原则就是,将会改变的地方抽离出来封装。我们将条件分支这段抽离出来封装到新的类中。

简单工程模式

定义:定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类

在简单工厂模式中用于被创建实例的方法通常为静态方法,因此简单工厂模式又被成为静态工厂方法

下面,我们来创建一个简单工程模式,代码如下:

class SimpleFactory{    public static function createMusicPlayer ($type)    {        if ($type == 1) {            $player = new QQPlayer();        } else if ($type == 2) {            $player = new WyPlayer();        } else if ($type == 3) {            $player = new KGPlayer();        } else {            return null;        }        return $player;    }}

然后,文章开头的那段代码就可以修改成如下:

$player  = SimpleFactory::createMusicPlayer($type);$player->on();  // 打开播放器$player->choiceMusic('思念是一种病');  // 选择歌曲$player->play();  // 开始播放

可能会有疑问,这么做有什么用处呢?好像只是将问题从一个地方搬运到了另一个地方。

想想看,我们可能会早上听音乐或者晚上听音乐,或者这个播放器没有我们想要听的音乐的话,我们需要换一个播放器。那么就可能在多个地方new出音乐播放器。所以把这段代码放一个地方总比放多个地方要好,需要改的时候只需该一个地方就行了。这样维护的时候,只需要修改简单工厂模式类中的createMusicPlayer即可。

更多相关文章

  1. Python超越Java成为最受欢迎的教学语言;9月,Adblock Plus可能会退
  2. 5G 有可能会使 Web 明显变慢[每日前端夜话0xC2]
  3. HTML5 标签audio添加网页背景音乐代码
  4. 已开启GTID的情况下的binlog复制切换到GTID复制可能会遇到的问题
  5. 一个在线音乐软件的故事(三、音乐从哪里来?)
  6. Android Service使用方法--简单音乐播放实例
  7. 获取所有音乐文件的专辑封面
  8. 在两台设备上播放一首音乐

随机推荐

  1. Android网络连接判断与处理
  2. 安卓布局之线性布局(Linearlayout)
  3. Android EditText取消自动焦点获取
  4. 【Android】Android Layout Binder——根
  5. android 绘图
  6. PreferenceActivity、PreferenceFragment
  7. Python on Android
  8. Android关闭多个activity
  9. Android中文API —— VideoView
  10. android studio 3.1 Android Device Moni