zoukankan      html  css  js  c++  java
  • 桥接模式

    <?php
    #Bridge(桥接)模式:将抽象部分与它的实现部分分离,使它们都可以独立的变化
    
    
    
    //实现站内、eamil都能发送普通信息和紧急信息 
    //抽象类,定义信息 
    abstract class info{
        protected $send = null;
        public function __construct($send){
            $this->send = $send;
        }
        abstract public function msg($content);
        public function send($to,$content){
            $content = $this->msg($content);
            $this->send->send($to,$content);
        }
    }
    
    class zn{
        public function send($to,$content){
            echo "站内给",$to,"内容是:",$content;
        }
    }
    
    class email{
        public function send($to,$content){
            echo "email给",$to,"内容是:",$content;
        }
    }
    class sms{
        public function send($to,$content){
            echo "sms给",$to,"内容是:",$content;
        }
    }
    
    //扩展抽象类
    class commoninfo extends info{
        public function msg($content){
            return "普通".$content;
        }
    }
    class warninfo extends info{
        public function msg($content){
            return "紧急".$content;
        }
    }
    class dangerinfo extends info{
        public function msg($content){
            return "特级".$content;
        }
    }
    
    $commoninfo = new commoninfo(new zn());
    $commoninfo->send("小明","吃饭了");
    
    echo "<br>";
    
    $dangerinfo = new dangerinfo(new sms());
    $dangerinfo->send("小刚","失火了,快回家");
    
    
    
    
    优点
    分离接口及其实现部分, 将Abstraction与Implementor分享有助于降低对实现部分编译时刻的依赖性, 接口与实现分享有助于分层,从而产生更好的结构化系统
    提高可扩充性
    实现细节对客户透明。
    

      

  • 相关阅读:
    经典算法之七大排序
    Memcached在Asp.NET中的使用
    利用memcached构建高性能的Web应用程序(转)
    C# 反射机制
    数据库事务设置保存点
    C# 串口通信总结
    某投注网站的BUG
    浙江电信网上营业厅的一个BUG(有更新)
    解决DESCryptoServiceProvider加解密时弱密钥异常
    ASP.NET自定义控件开发示例(二)
  • 原文地址:https://www.cnblogs.com/sunlong88/p/8691458.html
Copyright © 2011-2022 走看看