php 设计模式- 委托模式

委托模式

通过分配或委托其他对象,委托设计模式能够去除核心对象中的判决和复杂的功能性。
应用场景
设计了一个cd类,类中有mp3播放模式,和mp4播放模式
改进前,使用cd类的播放模式,需要在实例化的类中去判断选择什么方式的播放模式
改进后,播放模式当做一个参数传入playList函数中,就自动能找到对应需要播放的方法。

代码:cd类,未改进之前,选择播放模式是一种痛苦的事情 。

<?php
//委托模式-去除核心对象中的判决和复杂的功能性
//使用委托模式之前,调用cd类,选择cd播放模式是复杂的选择过程
classcd{
protected$cdInfo=array();

publicfunctionaddSong($song){
$this->cdInfo[$song]=$song;
}

publicfunctionplayMp3($song){
return$this->cdInfo[$song].'.mp3';
}

publicfunctionplayMp4($song){
return$this->cdInfo[$song].'.mp4';
}
}
$oldCd=newcd;
$oldCd->addSong("1");
$oldCd->addSong("2");
$oldCd->addSong("3");
$type='mp3';
if($type=='mp3'){
$oldCd->playMp3();
}else{
$oldCd->playMp4();
}
>

代码:通过委托模式,改进后的cd类

classcdDelegate{
protected$cdInfo=array();

publicfunctionaddSong($song){
$this->cdInfo[$song]=$song;
}

publicfunctionplay($type,$song){
$obj=new$type;
return$obj->playList($this->cdInfo,$song);
}
}

classmp3{
publicfunctionplayList($list){
return$list[$song];
}
}

classmp4{
publicfunctionplayList($list){
return$list[$song];
}
}

$newCd=newcd;
$newCd->addSong("1");
$newCd->addSong("2");
$newCd->addSong("3");
$type='mp3';
$oldCd->play('mp3','1');//只要传递参数就能知道需要选择何种播放模式

参考:《PHP设计模式》Aaron Saray著

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,572评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,511评论 25 709
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 9,404评论 1 15
  • 最近几日,凡在家用餐,我都会不由自主地要夹上半块或一块豆腐乳佐饭。我知道这是我的豆腐...
    茄子蓝阅读 2,828评论 0 1
  • 写作练习,开贴篇 本人在37岁高龄之际,决定改行学文案,学写作 学习的过程中,深知写的重要性,于是开贴日更,开启刻...
    胖师爷阅读 7,384评论 0 1

友情链接更多精彩内容