ホームページ > php教程 > php手册 > PHP 設計パターン Strategy (戦略パターン)

PHP 設計パターン Strategy (戦略パターン)

WBOY
リリース: 2016-06-13 12:07:54
オリジナル
885 人が閲覧しました

コードをコピー コードは次のとおりです:


/**
* 戦略パターン (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()); // キャッシュ戦略を変更します
?>

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート