命令类:1.命令角色:声明了一个给所有具体命令类的抽象接口。这是一个抽象角色。2.具体命令角色:定义一个接受者和行为之间的弱耦合;实现execute方法,负责调用接受的相应操作。execute()方法通常叫做执行方法3.客户角色:创建一个具体命令对象并确定其接受者。4.请求者角色:负责调用命令对象执行请求,相关的方法叫做行动方法。5.接受者角色:负责具体实施和执行一个请求。作用:1.抽象出待执行的动作以参数化对象。2.在不同的...
组合模式(Composite Pattern)有时候又叫做部分-整体模式,用于将对象组合成树形结构以表示“部分-整体”的层次关系。组合模式使得用户对单个对象和组合对象的使用具有一致性。常见使用场景:如树形菜单、文件夹菜单、部门组织架构图等。<?php
/*** *安全式合成模式*/
interface Component {public function getComposite(); //返回自己的实例public function operation();
}class Composite implements Component { // 树枝组件角...
什么是适配器:适配器设计模式只是将某个对象的接口适配为另一个对象所期望的接口。 设计情景:假如我们原始的有一个UserInfo的类,提供用户信息的类,早起设计该类的时候,只实现了一个getUserName获取用户名的方法。我们的MyOldObject类中,将从UserInfo这个类中获取用户信息,并且输出用户名随着时间的推移,我们旧的UserInfo这个类只提供的获取用户名的方法,已经没法满足需求,我们同时需要获取用户的年龄等信息。为了不改变原...
复制代码 代码如下:<?php /** * 观察者模式 * * 定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新 * 能够便利地创建查看目标对象状态的对象,并且提供与核心对象非耦合的指定功能 * 插件系统 */ class Observerable { private $_observers = array(); public function registerObserver($observer) { $this->_observers[] = $observer; } public function removeObserver(...
设计模式是技术面试的时候难免会被问到的一个问题,特别会让你举例说明各种设计模式的使用场景。使用设计模式可以减轻我们的工作量,优化我们的代码。设计模式非常的多,这里介绍单例模式,工厂模式,组合模式,策略模式4种模式/*** 单例模式* */class Config
{staticprivate $_instance = NULL;private $_settings = array();private function __construct(){}private function __clone(){};static function getInstance(){if(sel...
包装对象 扩展实例。interface IComponent
{function Display();
}class Person implements IComponent
{private$name;function __construct($name){$this->name = $name;}function Display(){echo "装扮的:{$this->name}<br/>";}
}class clothes implements IComponent
{protected$component;function Decorate(IComponent $component){$this->component = $component;}publicfunction Display(){if (!empty($this->component)) ...
PHPStorm IDE开发字体选用:Source Code Pro , Courier New , Concolasphp命名空间 :可以解决 不同类中 相同名字方法的冲突namespace test1;function test(){}自动载入 : function __autoload($class){ require __DIR__.‘/‘$class.‘.php‘;}spl_autoload_register(); 这个函数,可以允许多个 autoload 必须现在头一行例如 :spl_autoload_register(‘autoload1‘);spl_autoload_register(‘autoload2‘);funct...
<?php
header("Content-type:text/html;charset=utf-8");abstractclass msg{protected $send = null;public function __construct($send){$this->send = $send;}abstract function msg($content);function send($to, $content){$content = $this->msg($content);$this->send->send($to, $content);}
}/**
* 普通信
*/class ZnMsg
{public function send($to, $content){echo "给".$to."发送站内信:<br>".$content;}
}/**
* email...
概念介绍:工厂方法模式: 在学习工厂方法模式之前请首先阅读简单工厂模式工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中.工厂方法模式是简单工厂模式的进一步抽象和推广工厂方法模式的几个需要的对象:1、抽象工厂2、具体工厂:实现抽象工厂接口列出的方法,并且每个工厂对应各自的产品3、抽象产品4、具体产品 工厂方法模式里面的果园的例子,可以改写成工厂方法模式 , 大家可以自己实验。案例...
一、工厂模式:减少new的使用,定义一个类,专门用来创建其它对象例:class A{static function create(){return new DB();}
}
$db = A::create();二、单例模式:确保一个类只有一个实例使用场景:缓存、日志对象、数据库操作只有一个实例。缺点:1. 难于调试2. 隐藏的依赖关系例:class A {//静态变量保存全局实例private static $_init = null;//私有构造函数,防止外部实例化对象private function __construct(){}//私有克隆函数...
介绍 装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 思维导图 有这样一个项目,做一个餐厅订餐系统。起初的代码结构是这样的。前面有很多Beverage的继承类,现在遇到的问题是牛奶的价钱上涨了,那么所有相关的类,我们都要进行调整,比如Milk,SugarAndMilk类,这种类还有很多,我们需要逐个去修改类中的方法——开发人员每次都做这种事情,要疯了!所以我们要改变现有的结构。以下的...
题记==============================================================================本php设计模式专辑来源于博客(jymoz.com),现在已经访问不了了,这一系列文章是我找了很久才找到完整的,感谢作者jymoz的辛苦付出哦!本文地址:http://www.cnblogs.com/davidhhuan/p/4248192.html==============================================================================星际中的虫族部队有个特别的进化兵种,就是飞龙,飞龙可以变成...
php 设计模式1.单例模式 单例模式顾名思义,就是只有一个实例。作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 单例模式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。为什么要使用PHP单例模式1. php的应用主要在于数据库应用, 一个应用中会存在大量的数据库操作, 在使用面向对象的方式开发时, 如果使用单例模...
工厂模式主要是为了代码执行的时候更灵活地new对象,就像工厂流水线一样,批量生产出产品。目的:简化对象生成过程,更加灵活。 例子如下:<?php/** * User: freephp * Date: 2015/9/23 * Time: 16:58 */interface Medias { function show(); // 展现效果的功能 function notify(); //有更新通知功能}class Picture implements Medias{ public function show() { echo "我是图片服务,高清无码!\n"; } publ...
单例模式顾名思义: 这个类只能实例化一次.不能被克隆.一般被用来处理数据库操作等需要频繁使用,但是多次实例化又很浪费内存的类.下面是一个带有注释的实例: <?php #单例模式######################class Single{private static $instance; #定义私有静态属性,用来存放本类实例化后的对象.private function __construct(){} #私有构造方法,防止new实例化操作.public static function getInstance(){ if(!(self::$instanc...