개발 꿀팁/PHP
PHP 정책 패턴 쓰기
Jammie
2022. 7. 27. 14:42
반응형
1. 추상 정책 인터페이스 만들기
interface GoodsStrategy{
public function modifyState();
}
2, 필요한 알고리즘 클래스 작성
class SupplerCommodityPoolClass implements GoodsStrategy{
protected $goodsObj;
protected $publicGoodsSaveObj;
public function __construct(PublicGoodsSave $publicGoodsSaveObj,Goods $goodsObj)
{
$this->publicGoodsSaveObj = $publicGoodsSaveObj;
$this->goodsObj = $goodsObj;
}
public function modifyState(){
//네가 원하는 처리를 해라
}
}
class SupplerCommodityPoolClass_1 implements GoodsStrategy{
protected $goodsObj;
protected $publicGoodsSaveObj;
public function __construct(PublicGoodsSave $publicGoodsSaveObj,Goods $goodsObj)
{
$this->publicGoodsSaveObj = $publicGoodsSaveObj;
$this->goodsObj = $goodsObj;
}
public function modifyState(){
//네가 원하는 처리를 해라
}
}
class SupplerCommodityPoolClass_2 implements GoodsStrategy{
protected $goodsObj;
protected $publicGoodsSaveObj;
public function __construct(PublicGoodsSave $publicGoodsSaveObj,Goods $goodsObj)
{
$this->publicGoodsSaveObj = $publicGoodsSaveObj;
$this->goodsObj = $goodsObj;
}
public function modifyState(){
//네가 원하는 처리를 해라
}
}
3. 구성 클래스 작성
class GoodsConfig{
public $config;
public function __construct(GoodsStrategy $config){
$this->config = $config;
}
public function doWork(){
return $this->config->modifyState();
}
}
4. 호출(클라이언트 호출, 어떤 정책을 사용할지 고객 스스로 결정, 즉 고객 스스로 인스턴스화 알고리즘 클래스)
//$reClass = new GoodsConfig(new SupplerCommodityPoolClass_1());
//$reClass = new GoodsConfig(new SupplerCommodityPoolClass_2());등
$reClass = new GoodsConfig(new SupplerCommodityPoolClass());
$reClass->doWork();
반응형