PHP设计模式之模板方法模式Template Method Pattern详解(php设计模式六大原则有哪些)全程干货

随心笔谈9个月前更新 admin
222 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

这篇文章介绍了如何通过Java编程实现一个下载功能的结构化设计。文章定义了一个抽象类`DownloadSongs`,该类包含两个钩子方法(`beforeDownloadHook`和`afterDownloadHook`),用于在下载前和下载后执行特定操作。此外,该类还定义了`download`方法,用于调用这两个钩子方法以及实际的音乐下载逻辑。 文章还展示了如何通过子类化的方式实现具体的下载功能。具体来说,`KuGouMusic`类实现了从酷狗音乐下载音乐的功能,而`QQMusic`类实现了从QQ音乐下载音乐的功能。每个子类都继承了父类的钩子方法,并在`downloadMusic`方法中定义了具体的下载逻辑。 文章最后通过实例化`KuGouMusic`和`QQMusic`类并调用`download`方法,展示了整个下载功能的使用场景。总体来看,文章通过钩子方法和子类化的方式,实现了对不同音乐平台下载功能的灵活扩展。

//抽象出来一个下载类
abstract class DownloadSongs {
protected $singer;
protected $operator;
public function __construct($singer) {
$this->singer=$singer;
}
//前置钩子
protected function beforeDownloadHook() {
echo ‘充值’ . $this->operator . ‘会员’ . PHP_EOL;
}
//后置钩子
protected function afterDownloadHook() {
echo $this->operator . ‘还算好用,就是要充会员’ . PHP_EOL;
}
//组合调用
public function download() {
$this->beforeDownloadHook();
$this->downloadMusic();
$this->afterDownloadHook();
}
//具体实现让子类进行
abstract protected function downloadMusic();
}
//酷狗类,实现父类的两个方法
class KuGouMusic extends DownloadSongs {
protected $operator=’酷狗’;
protected function downloadMusic() {
echo ‘从酷狗音乐上下载’ . $this->singer . ‘的歌曲’ . PHP_EOL;
}
}
//QQ类,实现父类的两个方法
class QQMusic extends DownloadSongs {
protected $operator=’QQ’;
protected function downloadMusic() {
echo ‘从QQ音乐上下载’ . $this->singer . ‘的歌曲’ . PHP_EOL;
}
}
//调用端=======================================================================(new KuGouMusic(‘凤凰传奇’))->download();
(new QQMusic(‘英文’))->download();

© 版权声明

相关文章