코드 복사 코드는 다음과 같습니다.
/**
* 전략 패턴(Strategy.php)
*
* 일련의 알고리즘을 정의하고 하나씩 캡슐화하여 상호 교환 가능하게 만듭니다. 사용되는 알고리즘의 변경 사항은 사용하는 고객과 무관할 수 있습니다.
*
*/
// - --다음은 닫힌 일련의 알고리즘입니다----
interface CacheTable
{
public function get($key)
public function set($key,$value) ;
public function del($key);
}
//캐시 사용 안함
class NoCache는 CacheTable을 구현합니다.
{
public function __construct(){
echo " NoCache 사용
";
}
공용 함수 get($key)
{
false 반환;
}
공용 함수 집합($key,$value)
{
return true;
}
public function del($key)
{
return false
}
// 파일 캐시
FileCache 클래스는 CacheTable
{
공용 함수 __construct()
{
echo "FileCache 사용
"
//파일 캐시 생성자
}
공용 함수 가져오기($key)
{
// 파일 캐시 가져오기 메서드 구현
}
공용 함수 집합($key,$value)
{
// 파일 캐시 set 메소드 구현
}
공용 함수 del($key)
{
// 파일 캐시 del 메소드 구현
}
}
// TTServer
class TTCache CacheTable 구현
{
공용 함수 __construct()
{
echo "TTCache
사용"
// TTServer 캐시 생성자
}
공용 함수 get ($key)
{
// TTServer 캐시된 get 메소드 구현
}
공용 함수 set($key,$value)
{
// TTServer 캐시된 set 메소드 구현
}
public function del($key)
{
// TTServer 캐시 del 메소드 구현
}
}
// -- 다음은 캐싱 없이 사용됩니다. 전략 - -----
클래스 모델
{
비공개 $_cache;
공용 함수 __construct()
{
$this->_cache = new NoCache()
}
공용 함수 setCache($cache)
{
$this->_cache = $cache
}
}
class UserModel 확장 모델
{
}
클래스 PorductModel 확장 모델
{
공용 함수 __construct()
{
$this->_cache = new TTCache()
}
}
// -- 예 ---
$mdlUser = new UserModel();
$mdlProduct = new PorductModel()
$mdlProduct->setCache(new FileCache()) // 변경 캐싱 전략
?>