PHP常用设计模式之委托设计模式,php委托设计模式
PHP常用设计模式之委托设计模式,php委托设计模式
模式定义
委托是对一个类的功能进行扩展和复用的方法。它的做法是:写一个附加的类提供附加的功能,并使用原来的类的实例提供原有的功能。
假设我们有一个 TeamLead 类,将其既定任务委托给一个关联辅助对象 JuniorDeveloper 来完成:本来 TeamLead 处理 writeCode 方法,Usage 调用 TeamLead 的该方法,但现在 TeamLead 将 writeCode 的实现委托给 JuniorDeveloper 的 writeBadCode 来实现,但 Usage 并没有感知在执行 writeBadCode 方法。
设计了一个cd类,类中有mp3播放模式,和mp4播放模式
改进前,使用cd类的播放模式,需要在实例化的类中去判断选择什么方式的播放模式
改进后,播放模式当做一个参数传入playList函数中,就自动能找到对应需要播放的方法。
一,未改进前
<?php //使用委托模式之前,调用cd类,选择cd播放模式是复杂的选择过程 class cd { protected $cdInfo = array(); public function addSong($song) { $this->cdInfo[$song] = $song; } public function playMp3($song) { return $this->cdInfo[$song] . '.mp3'; } public function playMp4($song) { return $this->cdInfo[$song] . '.mp4'; } } $oldCd = new cd; $oldCd->addSong("1"); $oldCd->addSong("2"); $oldCd->addSong("3"); $type = 'mp3'; if ($type == 'mp3') { $oldCd->playMp3(); } else { $oldCd->playMp4(); }
二、通过委托模式,改进后的cd类
<?php namespace Tools; /* 委托模式 去除核心对象中的判决和复杂功能性 */ //委托接口 interface Delegate{ public function playList($list,$song); } //mp3处理类 class mp3 implements Delegate{ public function playList($list,$song){ return $list[$song].'.mp3'; } } //mp4处理类 class mp4 implements Delegate{ public function playList($list, $song) { return $list[$song].'.mp4'; } } class cdDelegate{ protected $cdInfo = array(); public function addSong($song){ $this->cdInfo[$song] = $song; } public function play($type,$song){ $name = '\Tools\\'.$type; $obj = new $name; return $obj->playList($this->cdInfo,$song); } } $newCd = new cdDelegate(); $newCd->addSong("1"); $newCd->addSong("2"); $newCd->addSong("3"); echo $newCd->play('mp3','1');//只要传递参数就能知道需要选择何种播放模式
以上内容给大家介绍了PHP委托设计模式实例详解,希望对大家有所帮助。
您可能感兴趣的文章:
- php设计模式 Delegation(委托模式)
- PHP设计模式之装饰者模式
- php中使用接口实现工厂设计模式的代码
- PHP最常用的2种设计模式工厂模式和单例模式介绍
- php设计模式小结
- php设计模式之单例模式使用示例
- php设计模式之命令模式使用示例
- PHP设计模式之观察者模式(Observer)详细介绍和代码实例
- php设计模式之简单工厂模式详解
- php设计模式之委托模式

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP에서 데이터베이스 작업은 매우 쉽습니다. 이번 장에서는 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 이해하겠습니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu
