zoukankan      html  css  js  c++  java
  • 《设计模式

    最近真是忙到死......

    其实还是自己偷懒了......

    参考 :PHP设计模式——代理模式

     一:什么是代理模式?

      - 拿生活中例子其实很容易理解

        - 小王,帮我告诉下老师,今天我生病了,不能去教室了。

          - 这时候,小王就是你的代理代你去告诉老师你的事情。

        - 老王,我喜欢一个女孩,你帮我把这封情书送给小静吧。

          - 老王,就是你送情书的代理。

    二:为什么要用代理模式?

      - 理解了代理模式之后,我也们很清楚的明白的代理模式的用处。

      - 解决了目标和对象之间的 (不方便) 等等阻碍。

      - 起到了中介的作用,同时保护目标和对象。

    三:代理模式的优缺点?

      - 缺点

        - 对象克隆,造成多余开销

        - 逻辑拆分

      - 优点

        - 代码清晰,高扩展

       

    四:简单实现一个代理模式?

    <?php
    /**
     * Created by PhpStorm.
     * User: LYL
     * Date: 2015/5/16
     * Time: 16:33
     */
     
    /**顶层接口
     * Interface IGiveGift
     */
    interface IGiveGift
    {
        function giveRose();
        function giveChocolate();
    }
     
    /**追求者
     * Class Follower
     */
    class Follower implements IGiveGift
    {
        private $girlName;
     
        function __construct($name='Girl')
        {
            $this->girlName=$name;
        }
     
        function giveRose()
        {
            echo "{$this->girlName}:这是我送你的玫瑰,望你能喜欢。";
            echo PHP_EOL;
        }
     
        function giveChocolate()
        {
            echo "{$this->girlName}:这是我送你的巧克力,望你能收下。";
            echo PHP_EOL;
        }
    }
     
    /**代理
     * Class Proxy
     */
    class Proxy implements IGiveGift
    {
        private $follower;
     
        function __construct($name='Girl')
        {
            $this->follower = new Follower($name);
        }
     
        function giveRose()
        {
            echo "代理送出 - ";
            echo PHP_EOL;
            $this->follower->giveRose();
        }
     
        function giveChocolate()
        {
            echo "代理送出 - ";
            echo PHP_EOL;
            $this->follower->giveChocolate();
        }
    }
    
    $proxy=new Proxy('范冰冰');
    $proxy->giveRose();
    $proxy->giveChocolate();

    github

  • 相关阅读:
    命令行参数(argc, argv)
    [转]CodeSmith和PowerDesigner的使用安装和数据库创建
    INADDR_ANY的确切含义
    C++的CreateThread实例
    浅谈VC++中预编译的头文件放那里的问题分析
    [转]Windows网络编程学习-面向连接的编程方式
    char 转wchar_t 及wchar_t转char
    connect函数详解
    正斜杠(/)与反斜杠()区别
    C/C++关于string.h头文件和string类
  • 原文地址:https://www.cnblogs.com/25-lH/p/10003655.html
Copyright © 2011-2022 走看看