设计模式之结构型模式—— 2.7 代理模式

<?php
/**
 * 2.7 代理模式
 * 定义:
 *      为其他对象提供一种代理以控制对这个对象的访问。
 * 角色:
 *      1. 代理抽象角色
 *          职责:统一代理和被代理角色接口
 *      2. 被代理角色
 *          职责:
 *      3. 代理角色
 *          职责:代理角色2,并对角色2进行访问控制.
 * 优点:
 *      1. 职责清晰
 *      2. 高扩展性
 *      3. 智能化
 * 缺点:
 *      1. 由于客户端和真实主题之家增加了代理对象,因此有些
 *         类型的代理模式可能会造成请求的处理速度慢。
 *      2. 实现代理模式需要额外,有些代理模式的实现非常复杂
 * 使用场景:
 *      1. 远程代理
 *      2. 虚拟代理
 *      3. 安全代理
 *      4. 智能指引
 */

header(‘content-type:text/html;charset=utf8‘);
//被追求者类
class SchoolGirl{
    private $name;
    public function __construct($name){
        $this->name=$name;
    }
    public function getName(){
        return $this->name;
    }
}

//代理接口。针对接口编程,符合了依赖倒转原则。
abstract class GiveGift{
    abstract public function giveDolls();
    abstract public function giveFlowers();
    abstract public function giveChocolate();
}
//追求者类
class Pursuit extends GiveGift{
    private $mm;
    public function __construct(SchoolGirl $mm){
        $this->mm=$mm;
    }
    public function giveDolls(){
        echo $this->mm->getName().‘送你洋娃娃‘;
    }
    public function giveFlowers(){
        echo $this->mm->getName().‘送你鲜花‘;
    }
    public function giveChocolate(){
        echo $this->mm->getName().‘送你巧克力‘;
    }
}
//代理者,它与追求者的功能(方法)一样,只不过起到了一个
//代理的作用,实际的东西(功能)依然是追求者的。代理者
//送的东西依然是追求者的。
class Proxy extends GiveGift{
    private $gg;
    public function __construct(SchoolGirl $mm){
        $this->gg=new Pursuit($mm);
    }
    public function giveDolls(){
        $this->gg->giveDolls();
    }
    public function giveFlowers(){
        $this->gg->giveFlowers();
    }
    public function giveChocolate(){
        $this->gg->giveChocolate();
    }
}

//客户端
$proxy1=new Proxy(new SchoolGirl(‘韩梅梅‘));
$proxy1->giveDolls();
echo ‘<br/>‘;
$proxy1->giveFlowers();
echo ‘<br/>‘;
$proxy1->giveChocolate();
时间: 2024-10-24 11:11:43

设计模式之结构型模式—— 2.7 代理模式的相关文章

Java经典23种设计模式之结构型模式(三)------附代理模式、适配器模式、外观模式区别

本文介绍7种结构型模式里的剩下两种:享元模式.代理模式. 一.享元模式FlyWeight 享元模式比较简单且重要,在很多场合都被用到,只不过封装起来了用户看不到.其概念:运用共享内存技术最大限度的支持大量细粒度的对象.这个概念给的有些抽象,说白了就是如果内存中存在某个对象A,如果再次需要使用对象A的时候如果内存中有A这个对象就直接使用它,不要再次new了.如果没有,则重新new一个.基于这个特点,享元模式使用时一般会给待访问对象传递一个Tag,用来标识这个对象,而且要同时使用抽象工厂的方法进行访

&quot;围观&quot;设计模式(12)--结构型之代理模式(Proxy Pattern)

维基百科 代理模式(英语:Proxy Pattern)是程序设计中的一种设计模式. 所谓的代理者是指一个类可以作为其它东西的接口.代理者可以作任何东西的接口:网络连接.内存中的大对象.文件或其它昂贵或无法复制的资源.----WIKIPEDIA 个人理解 代理模式就是找另外的一个对象作为代理去为你实施请求,代理模式分为两种,一种是静态代理模式,另外一种是动态代理模式,静态代理模式是代理类为其创建一个对象,将需要代理的类的对象赋予代理类中的该对象,让代理类中该对象去代替需要代理的类的对象去执行一定的

设计模式(就) : 结构型模式--代理模式

代理模式是比较常见的一种模式,我们平常接触的比较多,比如正向代理和反向代理. 正向代理的代理服务器是和客户端的网络在一起,由代理服务器转发请求和接受结果,比如有的公司的服务器,会过滤掉对外部网络的访问请求:反向代理的代理服务器接受来自客户端的请求,决定讲请求转发给哪个内部服务器进行处理,反向代理的服务器也可能会过滤掉一些不安全的请求,或者不符合验证条件的请求. 所以代理模式的主要目的是控制对象的访问. <java与模式>中代理模式有两种实现方式:一种是静态的实现方式,一种是利用jdk的动态的实

设计模式4 结构型模式

设计模式4  结构型模式 目录 代理模式 装饰器 外观模式 适配器模式 代理模式,美国,韩国代理购物 [email protected]:~$ cat main.cpp  #include<iostream> using namespace std; class Item //商品 { public: Item(string kind ,bool fact) { this->kind = kind; this->fact = fact; } string getKind() { r

《设计模式》结构型模式1

上篇博文写了创建型模式中的(工厂家族).这次来介绍一下结构型模式.主要从各个模式的含义,优缺点,适用场合及结构图来了解结构型模式. 结构型模式包括有7种模式,适配器模式,外观模式,代理模式,桥接模式,享元模式,组合模式,装饰模式.每个模式各有优缺,孰优孰劣,请看下文. 1.适配器模式 定义:将一个类的接口转换成客户希望的另外一个接口.使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 结构图: 适用于:想要使用一个已存在的类,但接口和你的要求不同时 在软件开发后期或是维护时期,在双方都不

设计模式总结-结构型模式

描述: 如何组合类和对象以获得最大的结构: 不是对接口和实现进行组合,而是描述了如何对一些对象进行组合,从而实现新功能的一些方法: 分类: 适配器模式 http://blog.csdn.net/huo065000/article/details/22177651 装饰模式 http://blog.csdn.net/huo065000/article/details/22061403 代理模式 http://blog.csdn.net/huo065000/article/details/22177

Java经典23种设计模式之结构型模式(一)

结构型模式包括7种:适配器模式.桥接模式.组合模式.装饰模式.外观模式.享元模式.代理模式. 本文主要介绍适配器模式和桥接模式. 一.适配器模式(Adapter) 适配器模式其实很简单,就像手机充电器一样,手机需要5V的,而插座出来是220V.因此需要充电器变压就ok.再比如,一个之会说汉语的和一个只会说英语的无法沟通,那就中间请个翻译.所有的交流通过翻译,翻译翻给会说英语的,就能完成一次单项交流的.链接1 中的例子非常生动形象了.总结一下,无非就是有个通用的接口(称为Target),如果一切顺

&quot;围观&quot;设计模式(30)--结构型设计模式总结(适配器、代理、装饰、外观、桥梁、组合、享元)

设计模式代码下载地址 设计模式代码下载地址 1  适配器模式 在设计模式中,适配器模式(英语:adapter pattern)有时候也称包装样式或者包装(wrapper).将一个类的接口转接成用户所期待的.一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中.----WIKIPEDIA 个人理解 适配器模式:将两个不一致或者说无法直接使用的类或者接口通过适配器模式进行兼容,使得他们可以在一块使用.适配器模式在之前的项目中我是用于处理数据的不兼容的,对

【大话设计模式】——结构型模式总结

结构型设计模式主要是从结构上解决代码的耦合问题.包含一下7种模式:Adapter,Proxy,Composite,Bridge,flyweight,Facade,Decorator.结构型中包含7个模式,有点多,不过比行为型模式少,但也容易忘记,加点魔术粉让我们忘不了. 首先,我们要先知道这7个模式都是什么意思. 一.概念 1.Adapter:将一个类的接口转换为客户希望的另一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类一起工作. 个人理解:看到这个模式让我想起了编码,

Java学习--设计模式之结构型模式(二)

一.装饰器模式(Decorator Pattern) 1.概念 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装.这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能. 2.简介 意图:动态地给一个对象添加一些额外的职责.就增加功能来说,装饰器模式相比生成子类更为灵活. 主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引