/** * 策略模式是将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,这就是策略模式 */ /** * 电商类网站,针对男生和女生要跳到不同的商品类目,并且所有广告位展示不同的广告 * 代码中会出现if男生 if女生...硬编码 当需求改变时所有代码都需要改变,这种情况就需要使用 策略模式因为策略模式 * 跟上下文的环境是中立的没有依赖,实现解耦,策略模式可以实现IOC,依赖倒置控制反转 */ interface UserStrategy{ public function showAD(); public function showCategory(); } //添加男性策略 class UserMan implements UserStrategy{ public function showAD(){ echo '男士新装'; } public function showCategory(){ echo '男士目录'; } } //添加女士策略 class UserWman implements UserStrategy{ public function showAD(){ echo '女士新装'; } public function showCategory(){ echo '女士目录'; } } //使用 class Page{ protected $strategy; public function show(){ $this->strategy->showAD(); $this->strategy->showCategory(); } public function getCategory(UserStrategy $strategy){ $this->strategy = $strategy; } } $page = new Page(); if(isset($_GET['nvsheng'])){ $strategy = new UserWman(); } else { $strategy = new UserMan(); } //当需求改变时只需要添加一个策略,在获得策略实例之前 创建新策略的实例即可(实现了解耦) $page->getCategory($strategy); $page->show();
php 设计模式(策略模式)
最新推荐文章于 2023-03-16 11:25:47 发布