策略模式:封装算法,选择所用具体实现的置业由客户对象承担。

将算法具体类,然后互相替换,不影响客户。

<?php
/**
* 设计模式之策略模式
* User: 小狗蛋儿
* Date: 2017/11/20
* Time: 20:44
*
* 各个算法之间相互替换,不会影响到使用算法的客户
*/ /**
* Class Xianjin
* 现金收费类
*/
abstract class Xianjin{
abstract function Jine($rmb);
} class A extends Xianjin{
public function Jine($rmb)
{
echo "0";
return $rmb;
}
} class B extends Xianjin{
public $zhe="0.8";
public function Jine($rmb)
{
echo "1";
return $rmb*$this->zhe;
}
} class C extends Xianjin{
public $a1=300;
public $a2=60;
public function Jine($rmb)
{
echo "3";
$result=$rmb;
if ($rmb>=$this->a1){
$result=$rmb-floor($rmb/$this->a1)*$this->a2;
}
return $result;
}
} class ContentCax{
public $ceshi;
public function __Construct($types){
switch ($types){
case "0":
$this->ceshi=new A();
break;
case "1":
$this->ceshi=new B();
break;
case "2":
$this->ceshi=new C();
break;
}
} public function GetRestult($rmb){
return $this->ceshi->Jine($rmb);
}
} /***
* 客户类
*/ class ssd{ public function ceshi(){
$a=new ContentCax("2");
$a->GetRestult("100");
}
} $ssd=new ssd();
$ssd->ceshi();

  

最新文章

  1. 学生信息管理系统(cocos2d引擎)——数据结构课程设计
  2. slickedit的alias配置
  3. libc++abi.dylib: terminate_handler unexpectedly threw an exception错误小结
  4. memcache 安装教程
  5. JUC.Condition学习
  6. CC_CALLBACK之间的区别
  7. linux网口绑定笔记-bind
  8. vxWorks下intel82567v3网卡驱动的更新
  9. centos7新增硬盘
  10. springboot之scheduled任务调度
  11. .17-浅析webpack源码之compile流程-入口函数run
  12. Java基础-Java中的堆内存和离堆内存机制
  13. ie中input光标问题
  14. 【CF802C】 Heidi and Library (hard)(费用流)
  15. yum安装redis phpredis扩展
  16. 用活firewalld防火墙之service
  17. PHP支持多线程吗?
  18. PTA 最大子列和问题(10 分)
  19. (十一)__LINE__、__FUNCTION__的使用
  20. tensorflow bilstm官方示例

热门文章

  1. Lane-Detection 近期车道线检测论文阅读总结
  2. NOIP提高组2018 D1T3 【赛道修建】
  3. IIS日志文件越来越大导致C盘空间变小处理方法
  4. python 利用jieba库词频统计
  5. MySQL数据库规范 (设计规范+设计规范+操作规范)
  6. kafka-消费者测试
  7. JavaScript实现异步的4中方法
  8. C# 获取页面get过来的数据
  9. Linux命令的执行
  10. c# 误区系列(二)