单例模式
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例
关键字 : 三私一公
<?php class DB { //静态变量保存全局实例 private static $_instance = null; //私有构造函数,防止外界实例化对象 private function __construct() { $this->conn(); } //私有克隆函数,防止外界克隆对象 private function __clone() { } //静态方法,单例统一访问入口 static public function getInstance() { if (!(self::$_instance instanceof self)) { self::$_instance = new self (); } return self::$_instance; } public function conn() { //连接数据库 } }
桥接模式
将抽象部分与具体实现相分离
<?php class Info{ public $lev; //发送等级:普通,重要,特级 public $target;//通过什么方式发送 //实际发送方法 public function Sending($to,$content){ //先把消息等级确定了 $content = $this->lev->msg($content); $target = $this->target->send($to); return $target.$content; } } //普通消息 class CommonInfo { public function msg($content){ return '普通消息:' . $content; } } //重要消息 class ImportInfo { public function msg($content){ return '重要消息:' . $content; } } //特别消息 class SpecialInfo { public function msg($content){ return '特别消息:' . $content; } } //站内发送方式 class ZnSend { public function send($to){ return '站内发给'. $to; } } //QQ发送方式 class QQSend { public function end($to){ return 'QQ发给'. $to; } } //Email发送方式 class EmailSend { public function send($to){ return '邮箱发给'. $to; } } $info = new Info();//实例化桥接类 $info->target = new ZnSend(); //实例化发送方式 $info->lev = new CommonInfo();//实例化消息等级 print_r($info->Sending('小明','回家吃饭'));//调用桥接类方法Sending,让ZnSend类和CommonInfo类结合 //output:站内发给小明普通消息:回家吃饭
组合模式
将对象以树形结构组织起来,以达成“部分-整体”的层次结构,使得客户端对单个对象和组合对象的使用具有一致性
外观模式
为子系统中的一组接口提供一个一致的界面, 外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用