개발 꿀팁/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();
반응형