【新】php 设计模式-策略模式
代码片段(1) [全屏查看所有代码]
1. [文件] test8.php ~ 4KB
<?php /** ****************************************************** * 策略模式:策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中, * 从而使得它们可以相互替换。策略模式使得算法可以 在不影响到客户端的情况下发生变化。 * 策略模式把行为和环境分开。环境类负责维持和查询行为类,各种算法在具体的策略类中提供。 * 由于算法和环境独立开来,算法的增减,修改都不会影响到环境和客户端。 * ********************************************************* */ /** * 数据源保存方式接口 * 定义了数据源操作的四种基本方式 (增,删,改,查) */ interface data_source { public function add(); public function delete(); public function update(); public function find(); } /** * 数据库保存方式具体类 * 具体的数据源接口的一种形式,该形式是把数据保存到数据库 */ class db_source implements data_source { public function add() { // 在这里写把数据插入数据库的代码 echo "增加数据到数据库"; } public function delete() { // 在这里写把数据从数据库删除的代码 echo "删除数据"; } public function update() { // 在这里写修改数据库中的数据的代码 echo "修改数据"; } public function find() { // 在这里从数据库查找数据代码 echo "查找数据"; } } /** * 文件保存方式具体类 * 具体的数据源接口的另一种形式,该形式是把数据保存到文件 */ class file_source implements data_source { public function add() { // 在这里写把数据插入文件的代码 echo "增加数据到文件"; } public function delete() { // 在这里写把数据从文件删除的代码 echo "删除数据"; } public function update() { // 在这里写修改文件中的数据的代码 echo "修改数据"; } public function find() { // 在这里从文件查找数据代码 echo "查找数据"; } } /*#*********************************# * 当然你还可以增加别的数据保存方式,比如芒果DB * * * * ################################## */ /* mongodb保存方式具体类 该形式是把数据保存到mongodb class mongodb_source implements data_source { public function add() { // 在这里写把数据插入文件的代码 echo "增加数据到mongodb"; } public function delete() { // 在这里写把数据从文件删除的代码 echo "删除数据"; } public function update() { // 在这里写修改文件中的数据的代码 echo "修改数据"; } public function find() { // 在这里从文件查找数据代码 echo "查找数据"; } } */ /** * 策略类 * 该类根据要求返回符合要求类别的的数据源 * 本例 $strategyName = db_source 或者 $strategyName = file_source */ class strategy { // 当然项目的实际应用情况可能比较复杂经过一系列的逻辑处理才能返回符合要求的实例, // 这里只是演示,所以体现了最简单的情况 public function getInstance($strategyName) { return new $strategyName; } } /** * 主体事件处理类 */ class control { private $datasource; public function __construct($strategyName) { // 策略者根据 要求($strategyName)经过内部决策生成一种实例 $this->datasource = strategy::getInstance($strategyName); } // 逻辑处理 public function add() { $this->datasource->add(); } } // 测试代码 //1: $control = new control("db_source"); $control->add(); // return 增加数据到数据库 //2: $control = new control("file_source"); $control->add(); // return 增加数据到文件 //3: /* * $control = new control("mongodb_source"); * $control->add(); * return 增加数据到mongodb */ ?>
로그인 후 복사
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사
어 ass 신 크리드 그림자 : 조개 수수께끼 솔루션
3 몇 주 전
By DDD
Windows 11 KB5054979의 새로운 기능 및 업데이트 문제를 해결하는 방법
3 몇 주 전
By DDD
Atomfall에서 크레인 제어 키 카드를 찾을 수 있습니다
3 몇 주 전
By DDD
<s> : 데드 레일 - 모든 도전을 완료하는 방법
4 몇 주 전
By DDD
Atomfall Guide : 항목 위치, 퀘스트 가이드 및 팁
1 몇 달 전
By DDD

뜨거운 도구

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

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

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

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

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

뜨거운 주제
Gmail 이메일의 로그인 입구는 어디에 있나요?
7691
15


자바 튜토리얼
1639
14


Cakephp 튜토리얼
1393
52


라라벨 튜토리얼
1287
25


PHP 튜토리얼
1229
29

