标签为 [设计模式] 的文章

设计模式之装饰器模式

设计思想 装饰器模式,可以动态添加修改类的功能 一个类提供了一项功能,如果在修改并添加额外的功能,传统的编程模式,需要编写一个子类继承他,并实现类的方法。 使用装饰器模式,仅需要在运行是添加一个装饰器对象实现就,可以实现最大的灵活性。 实现 定义装饰器接口 interface Decorator{ public function change(); } 创建装饰器 class BackgroundDecorator implements Decorator { public function change() { // TODO: Implement showContent() method. echo "装饰器二"; } } cl ......

设计模式之原型模式

设计思想

  1. 与工厂模式类似,都是用来创建对象。
  2. 与工厂模式的实现不同,原型模式是先创建好一个原型对象,然后通过clone 原型来创建新的对象,这样就免去了类创建是重复的初始化操作。
  3. 原型模式适用于大对象的创建,创建一个大对象需要很大的开销,如果每次new就会消耗很大,原型模式仅需内存拷贝。

实现

class  A{

}
$cloneobj = clone (new A());
var_dump($cloneobj);

其实实现非常简单,直接用clone进行对象的克隆,避免不必要的开销。

设计模式之策略模式

策略模式 将一组特定行为和算法封装成类,以适应某些特定的上下文环境。 实现 定义接口 interface Strategy{ public function showShop(); public function showAd(); } 针对不同的对象实现不同的策略。 策略一 class YangMan implements Strategy{ public function showShop() { // TODO: Implement showShop() method. echo '显示年轻人呢的商品'; } public function showAd() { // TODO: Implement showAd() method. echo "针对年轻人做的广告"; } } ......

设计模式之适配器模式

概念       将不同函数的接口封装成统一的api,每个类必须要实现接口中的方法,eg:操作mysql数据库有mysql,PDO,MySQLi三种,可以将三种分装成统一的接口,再例如cache适配器,将memeche ,redis ,file,apc等不同的缓存函数分装成统一的接口。 实现 先定义一个接口,让每一类都实现这一个接口 //定义接口 interface Adapter { public function connect(); public function close(); public function query(); //还以定义很多,也就是增删改查 } 定义mysqli操作数据库类,实现Adapte ......

设计模式之注册模式

注册模式 解决全局共享,交换对象。也叫注册树模式。 实现 //注册树模式 class Register { //这个变量应该能是全局的 protected static $trees; //注册到注册树上方法 public static function set($alias, $obj) { self::$trees[$alias] = $obj; } //获取对象 public static function get($alias) { return self::$trees[$alias]; } //释放注册对象 public function _unset($alias) { unset(self::$trees[$alias]); } } Register::set('std ......

设计模式之命令链模式

概念 命令链 模式以松散耦合主题为基础,发送消息、命令和请求,或通过一组处理程序发送任意内容。每个处理程序都会自行判断自己能否处理请求。如果可以,该请求被处理,进程停止。您可以为系统添加或移除处理程序,而不影响其他处理程序。(自己理解还是有点含糊)。 实现 <?php /** * Created by PhpStorm. * User: ASUS * Date: 2017-04-19 * Time: 19:25 * 命令链模式 */ //定义命令接口 interface commond { public function onCommond($name,$args); } //定义命令(说处理器更加合理)集合 class CommondChain ......

观察者模式

概念 观察者模式属于行为模式, 实现低耦合,非侵入式的通知与更新机制,当一个对象发生改变之后,依赖他的对象都会接受到通知,并自动更新。 运用场景 以点购买电影票为例,购买成功后,会有如下操作 1、通知购票者,订单成功支付,并放回对应的信息。 2、数据库会记录日志 3、购票送抵扣卷、兑换卷、积分 4、等等其他各类活动 实现 观察者模式典型实现方式: 1、定义2个接口:观察者(通知)接口、被观察者(主题)接口 2、定义2个类,观察者对象实现观察者接口、主题类实现被观者接口 3、主题类注册自己需要通知的观察者 4、主 ......

工厂模式

概念 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。笼统的说,输入不同的要求就实例化不同的对象。就是一个类所依赖的外部事物的实例,都可以被一个或多个 “工厂” 创建的这样一种开发模式,就是 “工厂模式”。其实根据实际情况 ......
百度统计