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

    单例模式

    单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例

    关键字 : 三私一公

    <?php
    
    class DB {
        //静态变量保存全局实例
        private static $_instance = null;
        //私有构造函数,防止外界实例化对象
        private function __construct() {
            $this->conn();
        }
        //私有克隆函数,防止外界克隆对象
        private function __clone() {
        }
        //静态方法,单例统一访问入口
        static public function getInstance() {
            if (!(self::$_instance instanceof self)) {
                self::$_instance = new self ();
            }
            return self::$_instance;
        }
        public function conn() {
            //连接数据库
        }
    }

    桥接模式

    将抽象部分与具体实现相分离

    <?php
    
    class Info{
        public $lev; //发送等级:普通,重要,特级
        public $target;//通过什么方式发送
        //实际发送方法
        public function Sending($to,$content){
            //先把消息等级确定了
            $content = $this->lev->msg($content);
            $target = $this->target->send($to);
            return $target.$content;
        }
    }
    
    //普通消息
    class CommonInfo {
        public function msg($content){
            return '普通消息:' . $content;
        }
    }
    
    //重要消息
    class ImportInfo {
        public function msg($content){
            return '重要消息:' . $content;
        }
    }
    
    //特别消息
    class SpecialInfo {
        public function msg($content){
            return '特别消息:' . $content;
        }
    
    }
    
    //站内发送方式
    class ZnSend {
        public function send($to){
            return '站内发给'. $to;
        }
    }
    
    //QQ发送方式
    class QQSend {
        public function end($to){
            return 'QQ发给'. $to;
        }
    }
    
    //Email发送方式
    class EmailSend {
        public function send($to){
            return '邮箱发给'. $to;
        }
    }
    
    $info = new Info();//实例化桥接类
    $info->target = new ZnSend(); //实例化发送方式
    $info->lev = new CommonInfo();//实例化消息等级
    print_r($info->Sending('小明','回家吃饭'));//调用桥接类方法Sending,让ZnSend类和CommonInfo类结合
    //output:站内发给小明普通消息:回家吃饭
    View Code

    组合模式

    将对象以树形结构组织起来,以达成“部分-整体”的层次结构,使得客户端对单个对象和组合对象的使用具有一致性

    外观模式

    为子系统中的一组接口提供一个一致的界面, 外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用

  • 相关阅读:
    kafka注册异常
    Android基于XMPP Smack Openfire下学习开发IM(五)连接断开重连
    openfire维持在线状态,监听消息
    openfire ping的smack解决方案(维持在线状态)
    openfire聊天记录插件
    openfire 发送 接受 注册 广播 好友列表 在线状态
    maven仓库中心mirrors配置多个下载中心(执行最快的镜像)
    开发openfire 消息拦截器插件PacketInterceptor
    Openfire注册流程代码分析
    linux centOS6 nexus 开启自动启动
  • 原文地址:https://www.cnblogs.com/tanxing/p/6650522.html
Copyright © 2011-2022 走看看