搜尋
首頁php教程PHP源码【新】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

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!