ホームページ > バックエンド開発 > PHPチュートリアル > PHPデザインパターン Strategy(戦略パターン)_PHPチュートリアル

PHPデザインパターン Strategy(戦略パターン)_PHPチュートリアル

WBOY
リリース: 2016-07-21 15:27:12
オリジナル
811 人が閲覧しました

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

/**
* 戦略パターン (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

http://www.bkjia.com/PHPjc/323797.html技術記事次のようにコードをコピーします。 ?php /** * 戦略パターン (Strategy.php) * * 一連のアルゴリズムを定義し、それらを 1 つずつカプセル化し、使用するアルゴリズムの変更を独立して行うことができます。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート