php设计模式--策略模式(六)

简介: php设计模式--策略模式(六)

1.策略模式,将- -组特定的行为和算法封装成类,以适应某些特定的上下文环境,这种模式就是策略模式

2.实际应用举例,假如一个电商网站系统,针对男性女性用户要各自跳转到不同的商品类目,并且所有广告位展示不同的广告

3.计算器实例

工厂模式和策略模式逻辑上的区别

<?php
//策略模式  做一个计算器
interface Math {
  public function calc($op1 ,$op2); 
}
  class MathAdd implements Math{
    public function calc($op1,$op2) {
      return $op1+$op2; 
    }
  }
  class MathSub implements Math{
    public function calc($op1,$op2) {
      return $op1-$op2 ; 
    }
  }
  class MathMul implements Math{
    public function calc($op1,$op2) {
      return $op1*$op2; 
    }
  }
/* 一般思路,根据传来0P ,制造不对对象,并且调用.
if($_ POST[ 'op']
*/
  class CMath {
    protected $calc = null ;
    public function  __construct($type){
      $calc = 'Math' . $type;
      $this->calc =new $calc();
    }
    public function calc($op1,$op2) {
      return $this->calc->calc($op1, $op2);
    }
  }
  //$type = $_POST['op']; 
  //$cmath = new CMath($type);
  //$cmath->calc($_POST['op1'],_POST['op2']);
  
  $type = 'add';
  $cmath = new CMath($type);
  echo $cmath->calc(3,5);

 

目录
相关文章
|
20天前
|
设计模式 PHP
php设计模式--装饰模式(七)装饰模式完成文章编辑
php设计模式--装饰模式(七)装饰模式完成文章编辑
12 0
|
3月前
|
设计模式 算法 搜索推荐
设计模式之策略模式
设计模式之策略模式
41 0
|
3月前
|
设计模式 算法 Java
行为型设计模式-策略模式(Strategy Pattern)
行为型设计模式-策略模式(Strategy Pattern)
|
20天前
|
设计模式 Java PHP
php设计模式--简单工厂模式(一)
php设计模式--简单工厂模式(一)
14 0
|
2天前
|
设计模式 算法 Java
Java 设计模式:探索策略模式的概念和实战应用
【4月更文挑战第27天】策略模式是一种行为设计模式,它允许在运行时选择算法的行为。在 Java 中,策略模式通过定义一系列的算法,并将每一个算法封装起来,并使它们可以互换,这样算法的变化不会影响到使用算法的客户。
8 1
|
3月前
|
设计模式 算法 Java
【设计模式】策略模式在数据接收和发送场景的应用
在数据接收和发送场景打算使用了if else进行判断。ASystem.sync("向A同步数据");BSystem.sync("向B同步数据");...非常麻烦,需求多了很臃肿!策略模式(Strategy Pattern)定义了一组同类型的算法,在不同的类中封装起来,每种算法可以根据当前场景相互替换,从而使算法的变化独立于使用它们的客户端(即算法的调用者)。// 创建两个策略对象// 创建上下文对象,并传入策略对象。
60 1
|
20天前
|
设计模式 PHP
php设计模式--责任链模式(五)
php设计模式--责任链模式(五)
13 0
|
1月前
|
设计模式 算法
策略模式--设计模式
策略模式--设计模式
17 0
|
1月前
|
设计模式 算法 Java
【设计模式】策略模式
【设计模式】策略模式
|
3月前
|
设计模式 算法 自动驾驶
常见的设计模式(模板与方法,观察者模式,策略模式)
随着时间的推移,软件代码越来越庞大,随着而来的就是如何维护日趋庞大的软件系统。在面向对象开发出现之前,使用的是面向过程开发来设计大型的软件程序,面向过程开发将软件分成一个个单独的模块,模块之间使用函数进行组合,最后完成系统的开发,每次需要修改软件,如果不涉及好各个模块的关系,就会导致软件系统难以维护,从而导致软件变得不可使用。面向对象方法用对象模拟问题域中的实体,以对象间的联系刻画实体间联系
68 2