コードをコピーします コードは次のとおりです:
/**
* 戦略パターン (Strategy.php)
*
* 一連のアルゴリズムを定義し、それらを 1 つずつカプセル化し、使用するアルゴリズムの変更を、それを使用する顧客から独立させることができます
*
*/
// ---以下は一連のアルゴリズムのクロージャーです----
インターフェース CacheTable
{
public function get($key);
public function del($key);
}
class NoCache は CacheTable を実装します
{
public function __construct(){
echo "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 "Use FileCache< ;br/>";
// ファイルキャッシュコンストラクター
}
public function get($key)
{
// ファイルキャッシュ取得メソッドの実装
}
public function set($key,$value)
{
/ / ファイルキャッシュセットメソッド実装
}
public function del($key)
{
// ファイルキャッシュ del メソッド実装
}
}
// TTServer
class TTCache は CacheTable を実装
{
public function __construct()
{
echo "TTCache を使用する
";
// TTServer キャッシュ コンストラクター
}
public function get($key)
{
// TTServer キャッシュ get メソッドの実装
}
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;
}
}
クラス UserModel はモデルを拡張します
{
}
クラス PorductModel はモデルを拡張します
{
public function __construct()
{
$this->_cache = new TTCache();
}
}
// -- 例 ---
$mdlUser = new UserModel();
$mdlProduct->setCache(new FileCache()); / キャッシュ戦略を変更します
以上、戦略 php の設計パターン 戦略の内容を含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。