• 单例模式
<?php
class mysingle
{
private static $myinstance =null;
private function __construct()
{
}
private function __clone()
{ }
public static function createobject()
{
if (self::$myinstance==null)
{
self::$myinstance = new self();
}
return self::$myinstance;
}
}
$thesingle = mysingle::createobject();
$anothersingle = mysingle::createobject();
echo ($thesingle===$anothersingle);
?>

输出结果:

1

说明两个对象完全一致

  • 观察者模式

被观察者(dingdaguo)做出某种行为(drink_cola())时,触发监控者(coach)的做出一些反应(persuade)

<?php
class dingdaguo
{
protected $observers = [];
public function addobserver($myobserver)
{
$this->observers[] = $myobserver;
}
public function drink_cola()
{
foreach($this->observers as $observer)
{
$observer->persuade();
}
}
public function delobsrver($observer)
{
$index = array_search($observer,$this->observers,);
$this->observers=array_slice($this->observers,,$index);
}
} class coach
{
public function __construct($name)
{
$this->name = $name;
} public function persuade()
{
echo $this->name."说:别喝可乐了,都是甜的东西".PHP_EOL;
}
}
$cpc = new coach("陈培昌");
$cj = new coach("程劲");
$dy = new dingdaguo();
$dy->addobserver($cpc);
$dy->addobserver($cj);
$dy->drink_cola();
echo "删除其中一个对象".PHP_EOL;
$dy->delobsrver($cj);
$dy->drink_cola();

输出结果:

陈培昌说:别喝可乐了,都是甜的东西
程劲说:别喝可乐了,都是甜的东西
删除其中一个对象
陈培昌说:别喝可乐了,都是甜的东西

  • 适配器

实现接口的过程中,所有类都按照一种方式实现接口

<?php
interface martial_trainning
{
public function welcomeword();
public function braziljudo();
public function muaythai();
}
class xxd
{
public function welcomeword()
{
echo "欢迎来到必图训练".PHP_EOL;
}
}
class cj
{
public function braziljudo()
{
echo "我是小烤肠,来跟我一起学巴西柔术吧".PHP_EOL;
}
} class cpc implements martial_trainning
{
protected $myxxd = null;
protected $mycj = null;
public function __construct($xxd,$cj)
{
$this->myxxd = $xxd;
$this->mycj = $cj;
}
public function welcomeword()
{
// TODO: Implement welcomeword() method.
$this->myxxd->welcomeword();
}
public function braziljudo()
{
// TODO: Implement braziljudo() method.
$this->mycj->braziljudo();
}
public function muaythai()
{
echo "我是小松鼠,跟我一起练习泰拳吧".PHP_EOL;
}
} $cj = new cj();
$xxd = new xxd();
$cpc = new cpc($xxd,$cj);
$cpc->braziljudo();
$cpc->welcomeword();
$cpc->muaythai();
?>

输出结果:

我是小烤肠,来跟我一起学巴西柔术吧
欢迎来到必图训练
我是小松鼠,跟我一起练习泰拳吧

  • 策略模式

通过可以预测的参数传入,来决定调用哪个类的实现

<?php
interface martial_trainning
{
public function hoaring();
}
class xxd implements martial_trainning
{
public function hoaring()
{
echo "诶斯~诶斯~".PHP_EOL;
}
}
class cj implements martial_trainning
{
public function hoaring()
{
echo "诶~嘿嘿".PHP_EOL;
}
}
class cpc implements martial_trainning
{
public function hoaring()
{
echo "嗷儿喂~嗷儿喂~";
}
}
class mycoach
{
protected $myobject = null;
public function __construct($whichobject)
{
$this->myobject = $whichobject;
}
public function hoaring()
{
$this->myobject->hoaring();
}
}
$cpc = new cpc();
$mycoach = new mycoach($cpc);
$mycoach->hoaring();
echo PHP_EOL."===========换了一个类=============".PHP_EOL;
$cj = new cj();
$mycoach = new mycoach($cj);
$mycoach->hoaring();
?>

输出结果:

嗷儿喂~嗷儿喂~
===========换了一个类=============
诶~嘿嘿

最新文章

  1. Spark2 ML 学习札记
  2. 什么是遗传方差(Genetic variance)、加性遗传方差(Additive genetic variance)、显性遗传方差(Dominance genetic variance)、上位遗传方差(Epistatic genetic variance)
  3. JavaScript-事件坐标
  4. jQuery原型方法first,last,eq,slice源码分析
  5. uC/OS-III学习2::uC/OS-III LED闪烁实验
  6. Dev gridControl 按回车增加一行
  7. Squid 日志详解
  8. a标签的link、visited、hover、active的顺序
  9. JDK1.5新特性(一)&hellip;&hellip;Enhanced for Loop
  10. [Javascript] Get Started with LeafletJS Mapping
  11. Codevs 4189 字典(字典树Trie)
  12. About the diffrence of wait timed_wait and block in java
  13. VMWare安装Win10虚拟机
  14. [异常解决] 奇巧淫技——VirtualBox中的linux无显示启动,并在win7上远程控制
  15. CentOS安装MySQL的完整步骤
  16. WPF设置对象隐藏、不可用
  17. delete[] p与 delete p
  18. CodeForces - 940C + CodeForces - 932B (两道比较好的模拟题)
  19. 第13章 GPIO—位带操作
  20. Windows hackson (rundll32--ADS)

热门文章

  1. [CF544E]Remembering Strings_状压dp
  2. 【转帖】 解开龙芯与mips4000的关系
  3. SQL SERVER DATENAME函数
  4. 「java.util.concurrent并发包」之 CAS
  5. (0)c++入门——认识指针与数组——指针即是内存中地址。
  6. centos 秘钥登录
  7. python 安装PostgreSQL 模块:psycopg2
  8. python安装OpenCV后import cv2报错解决办法
  9. c语言中gets()的详细用法
  10. asp.net 12 AJAX