zoukankan      html  css  js  c++  java
  • 【PHP设计模式 11_QiaoJie.php】桥接模式(针对 二维模型)

    <?php 
    /**
     * 【桥接模式(针对 二维模型)】
     * 对于多维度需要处理的事情,多耦合
     * 第一维度,发送信息的类型:站内信、email、手机短信
     * 第二维度,发送信息的紧急程度:普通、加急、特级
     * (说明)桥接模式只需要 A+B种类,但是常规的需要 A*B种类;
     *            维度越多,各维度下的分类越多,桥接模式越有优势!
     * 
     */
    
    header("Content-type: text/html; charset=utf-8");
    
    /**
     * 抽象的信息类
     */
    abstract class Msg{
        protected $send = null; //发送器
        public function __construct($send){
            $this->send = $send;
        }
        
        abstract public function msg($content); //信的紧急程度
        public function send($to,$content){
            //对 $content 进行加工
            $content = $this->msg($content);
            //执行发送
            $this->send->send($to,$content);
        }
    }
    
    /**
     * 按照 信息类型 划分三个类
     */
    class Web{ //站内信
        public function send($to,$content){
            echo "[站内信]发给 $to [内容] $content";
        }
    }
    class Email{ //Email信
        public function send($to,$content){
            echo "[Email]发给 $to [内容] $content";
        }
    }
    class Sms{ //手机短信
        public function send($to,$content){
            echo "[手机短信]发给 $to [内容] $content";
        }
    }
    
    /**
     * 按照 紧急程度 划分三个类
     */
    class PtMsg extends Msg{ //普通
        public function msg($content){
            return $content.'【信件类型是 普通信】';
        }
    }
    class JjMsg extends Msg{ //加急
        public function msg($content){
            return $content.'【信件类型是 加急信】';
        }
    }
    class TjMsg extends Msg{ //特急
        public function msg($content){
            return $content.'【信件类型是 特急信】';
        }
    }
    
    /*---------- 客户端开始任意随机配对调用 ---------*/
    //发送【普通】的【站内信】
    $pt_web_msg = new PtMsg(new Web());
    $pt_web_msg->send('小明','吃饭了');
    echo '<hr>';
    
    //发送【特急】的【站内信】
    $tj_web_msg = new TjMsg(new Web());
    $tj_web_msg->send('张三','去跑步了');
    echo '<hr>';
    
    //发送【加急】的【Email】
    $jj_email_msg = new JjMsg(new Email());
    $jj_email_msg->send('李四','在看书');
    echo '<hr>';
    
    //发送【普通】的【手机短信】
    $pt_sms_msg = new PtMsg(new Sms());
    $pt_sms_msg->send('武松','打老虎');
    echo '<hr>';
    
    /************** [ 如下为传统方式,比较麻烦 ] **************/
    
    /**
     * 需求:给用户发信息
     * 第一维度,发送信息的类型:站内信、email、手机短信
     * 第二维度,发送信息的紧急程度:普通、加急、特级
     * 按照常规思路如下:需要 3*3=9 个类!!
     */
    interface MsgTmp{
        public function send($to,$content);
    }
    //站内 普通信
    class WebPT implements MsgTmp{
        public function send($to,$content){
            echo "[站内信]发给 $to [内容] $content ";
        }
    }
    //Email 普通信
    class EmailPT implements MsgTmp{ //...
        public function send($to,$content){}
    } 
    //手机短信 普通信
    class SmsPT implements MsgTmp{ //...
        public function send($to,$content){}
    }
    //站内 加急信    class WebJJ implements MsgTmp{}
    //Email 加急信    class EmailJJ implements MsgTmp{}
    //手机短信 加急信    class SmsJJ implements MsgTmp{}
    
    //站内 特急信    class WebTJ implements MsgTmp{}
    //Email 特急信    class EmailTJ implements MsgTmp{}
    //手机短信 特急信    class SmsTJ implements MsgTmp{}
  • 相关阅读:
    win7连接l2tp报错789“L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到了一个处理错误”
    Django内置Admin
    python-django(day19)
    常用模块-day06
    生成器、内置函数、模块与包的使用、正则表达式-day05
    Python 函数对象、 名称空间与作用域、闭包、装饰器、迭代器
    python字符编码、文件处理、函数
    2018-06-19——考试周肝完的我又回来了
    2018-06-11——pthyon类型整理
    2018-06-10——python基础整理
  • 原文地址:https://www.cnblogs.com/rxbook/p/6003001.html
Copyright © 2011-2022 走看看