コードをコピーします コードは次のとおりです:
/**
* 戦略パターン (Strategy.php)
*
* 一連のアルゴリズムを定義し、それらを 1 つずつカプセル化し、使用するアルゴリズムの変更を、それを使用する顧客から独立させることができます
*
*/
// ---以下は一連のアルゴリズムのクロージャです--- -
interface CacheTable
{
public function get($key);
public function del($key);
}
// キャッシュを使用しない
class NoCache を実装しますCacheTable
{
public function __construct( ){
echo "Use NoCache
";
}
public function get($key)
{
return false}
public function set($key, $value)
{
return true ;
}
public function del($key)
{
return false;
}
// ファイルキャッシュ
class FileCache は CacheTable を実装します
{
public function __construct()
{
echo "FileCache を使用する
";
//ファイル キャッシュ コンストラクター
}
public function get($key)
{
//ファイル キャッシュ get メソッドの実装
}
public function set($key) ,$value)
{
// setメソッドのファイルキャッシュ実装
}
public function del($key)
{
// delメソッドのファイルキャッシュ実装
}
}
// TTServer
class TTCache実装CacheTable
{
public function __construct()
{
echo "Use TTCache
";
// TTServer キャッシュ コンストラクター
}
public function get($key)
{
// TTServer キャッシュ取得メソッドの実装
}
public function set($key,$value)
{
// TTServer のキャッシュされた set メソッドの実装
}
public function del($key)
{
// TTServer のキャッシュされた del メソッドの実装
}
}
/ / -- 以下はキャッシュなしで使用する戦略です ------
class Model
{
private $_cache;
public function __construct()
{
$this->_cache = new NoCache() ;
}
public function setCache($cache)
{
$this->_cache = $cache;
}
}
class UserModel extends Model
{
}
class PorductModel extends Model
{
public機能__construct()
{
$this->_cache = new TTCache();
}
}
// -- 例 ---
$mdlUser = new UserModel()
$mdlProduct = new PorductModel();
$mdlProduct ->setCache(new FileCache()) // キャッシュ戦略を変更します
;
http://www.bkjia.com/PHPjc/323797.html
www.bkjia.com
truehttp://www.bkjia.com/PHPjc/323797.html技術記事次のようにコードをコピーします。 ?php /** * 戦略パターン (Strategy.php) * * 一連のアルゴリズムを定義し、それらを 1 つずつカプセル化し、使用するアルゴリズムの変更を独立して行うことができます。