PHP设计模式:策略模式

简介:

步骤1.定义策略接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#UserStrategy.php 用户策略
 
<?php
 
namespace  celvmoshi;
 
/**用户策略接口
  * Interface UserStategy
  * @package celvmoshi
  */
interface  UserStrategy
{
     //显示广告
     public  function  showAd();
 
     //显示分类
     public  function  showCategory();
 
}


步骤2.实现策略业务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#FemaleStrategy.php 女性用户策略
<?php
namespace  celvmoshi;
 
/**女性用户策略
  * Class FemaleStrayegy
  * @package celvmoshi
  */
class  FemaleStrategy  implements  UserStrategy
{
     public  function  showAd()
     {
         echo  "2017 新潮女装\r\n" ;
     }
 
     public  function  showCategory()
     {
         echo  "服装\r\n" ;
     }
}


继续添加策略

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#MaleStrategy.php 男性用户策略
 
<?php
namespace  celvmoshi;
 
/**男性用户策略
  * Class MaleStrayegy
  * @package celvmoshi
  */
 
class  MaleStrategy  implements  UserStrategy
{
     //显示广告
     public  function  showAd()
     {
         echo  "新款宝马X6\r\n" ;
     }
 
     //显示分类
     public  function  showCategory()
     {
         echo  "小汽车\r\n" ;
     }
}



步骤3.在实际业务场景中运用策略

本实例的业务场景为:根据男女、性用户自动区分广告及分类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#index.php 默认业务访问入口
 
<?php
define( 'ROOT' , __DIR__ .  '/' );
 
//实现自动加载
spl_autoload_register( 'autoload' );
function  autoload( $className )
{
     $arr  explode ( '\\' $className );
     require_once  ROOT . ucfirst( $arr [1]) .  '.php' ;
}
 
class  Page
{
     protected  $strategy ; //显示策略
 
     public  function  index()
     {
         echo  "显示广告:" ;
         $this ->strategy->showAd();
 
         echo  "<hr>" ;
 
         echo  "显示分类:" ;
         $this ->strategy->showCategory();
 
 
     }
 
     //设置显示策略
     public  function  setStrategy(celvmoshi\UserStrategy  $strategy ) //(约定接口类型)
     {
         $this ->strategy =  $strategy ;
     }
}
 
$page  new  Page();
if  (isset( $_GET [ 'female' ])) {
     $userStrategy  new  celvmoshi\FemaleStrategy();
else  if  (isset( $_GET [ 'male' ])) {
     $userStrategy  new  celvmoshi\MaleStrategy();
else  {
     return ;
}
 
$page ->setStrategy( $userStrategy );
$page ->index();



至此已大功告成!











本文转自 hgditren 51CTO博客,原文链接:http://blog.51cto.com/phpme/2045866,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
设计模式 算法 Kotlin
Kotlin - 改良设计模式 - 策略模式
Kotlin - 改良设计模式 - 策略模式
47 4
|
23天前
|
设计模式 算法 Kotlin
Kotlin教程笔记(53) - 改良设计模式 - 策略模式
Kotlin教程笔记(53) - 改良设计模式 - 策略模式
40 1
|
26天前
|
设计模式 前端开发 JavaScript
JavaScript设计模式及其在实战中的应用,涵盖单例、工厂、观察者、装饰器和策略模式
本文深入探讨了JavaScript设计模式及其在实战中的应用,涵盖单例、工厂、观察者、装饰器和策略模式,结合电商网站案例,展示了设计模式如何提升代码的可维护性、扩展性和可读性,强调了其在前端开发中的重要性。
29 2
|
1月前
|
设计模式 缓存 数据库连接
深入理解PHP的面向对象编程与设计模式####
本文旨在通过实例解析PHP中面向对象编程的核心概念及其在实际开发中的应用,特别是单例模式、工厂模式和观察者模式等常见设计模式。文章将展示这些模式如何帮助开发者构建更加灵活、可维护的代码结构,以及它们在解决具体问题时的优势。 ####
|
1月前
|
设计模式 算法 Kotlin
Kotlin教程笔记(53) - 改良设计模式 - 策略模式
Kotlin教程笔记(53) - 改良设计模式 - 策略模式
45 2
|
1月前
|
设计模式 存储 数据库连接
PHP中的设计模式:单例模式的深入理解与应用
【10月更文挑战第22天】 在软件开发中,设计模式是解决特定问题的通用解决方案。本文将通过通俗易懂的语言和实例,深入探讨PHP中单例模式的概念、实现方法及其在实际开发中的应用,帮助读者更好地理解和运用这一重要的设计模式。
21 1
|
2月前
|
设计模式 监控 中间件
深入理解PHP中的中间件模式
【10月更文挑战第20天】探索PHP编程世界中的“交通枢纽”——中间件模式。从代码层面剖析如何实现请求和响应的高效管理,以及如何在开发中应用这一模式来增强项目的扩展性和维护性。
|
2月前
|
设计模式 PHP 开发者
PHP中的设计模式:桥接模式的解析与应用
在软件开发的浩瀚海洋中,设计模式如同灯塔一般,为开发者们指引方向。本文将深入探讨PHP中的一种重要设计模式——桥接模式。桥接模式巧妙地将抽象与实现分离,通过封装一个抽象的接口,使得实现和抽象可以独立变化。本文将阐述桥接模式的定义、结构、优缺点及其应用场景,并通过具体的PHP示例代码展示如何在实际项目中灵活运用这一设计模式。让我们一起走进桥接模式的世界,感受它的魅力所在。
|
2月前
|
设计模式 算法 数据库连接
PHP中的设计模式:提高代码的可维护性和扩展性
【10月更文挑战第13天】 本文将探讨PHP中常见的设计模式及其在实际项目中的应用。通过对比传统编程方式,我们将展示设计模式如何有效地提高代码的可维护性和扩展性。无论是单例模式确保类的单一实例,还是观察者模式实现对象间的松耦合,每一种设计模式都为开发者提供了解决特定问题的最佳实践。阅读本文后,读者将能更好地理解和应用这些设计模式,从而提升PHP编程的效率和质量。
|
2月前
|
设计模式 算法 Kotlin
Kotlin教程笔记(53) - 改良设计模式 - 策略模式
本教程详细讲解Kotlin语法,适合深入学习。快速入门可参考“简洁”系列教程。本文通过游泳运动员的案例,介绍策略模式及其在Kotlin中的改良应用,利用高阶函数简化代码结构,提高灵活性。
38 3