コードをコピー コードは次のとおりです:
/**
* 戦略パターン (Strategy.php)
*
* 一連のアルゴリズムを定義し、それらを 1 つずつカプセル化し、それらを交換可能にします。使用するアルゴリズムの変更は、使用する顧客に関係なく行うことができます。
*
*/
// ---以下は一連のアルゴリズムのクロージャーです----
interface CacheTable
{
public function get($key);
public function set($) key,$value);
public function del($key);
}
// キャッシュを使用しません
class NoCache は CacheTable を実装します
{
public function __construct (){
echo "NoCache を使用
";
public function get($key)
{
return false; >
パブリック関数セット ($key,$value)
{
return true;
public function del($key)
{
return false ;
}
}
// ファイルキャッシュ
クラス FileCache は CacheTable を実装します
{
public function __construct()
{
echo "Use FileCache< br/>";
// ファイル キャッシュ コンストラクター
}
public function get($key)
{
// ファイル キャッシュ get メソッドの実装
}
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 メソッド実装
}
}
// -- 以下はキャッシュを使用しない戦略です ----- --
クラス モデル
{
プライベート $_cache;
パブリック関数 __construct()
{
$this->cache = new NoCache()
}
public function setCache($cache)
{
$this->cache = $cache;
}
}
class UserModel extends Model
{
}
class PorductModel extends Model
{
public function __construct()
{
$this->cache = new TTCache();
}
// -- 例 ---
$mdlUser = new UserModel();
$mdlProduct = new PorductModel();
$mdlProduct->setCache( new FileCache()); // キャッシュ戦略を変更します
?>