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

    1.单例模式

    场景:连接mysql、操作cookie只有一个对象去连接
    原理:只能new一个对象(禁止new多个和clone)

    class single{
    protected static $sin = null;
    //方法前加final不能被覆盖,类前加final不能被继承
    //禁止外部NEW
    final protected function __construct()
    {
    }
    //禁止克隆
    final protected function __clone()
    {
    // TODO: Implement __clone() method.
    }

    //设置内部
    public static function getins(){
    if(self::$sin === null){
    self::$sin = new self();
    }
    return self::$sin;
    }
    }
    $s1 = single::getins();
    $s2 = single::getins();
    if($s1 == $s2){
    echo "是相同的";
    }else{
    echo "不是相同的";
    }

    2.工厂模式:工厂方法或者类生成对象,而不是在代码中直接new

    interface db{
        function conn();
    }
    
    interface Factory{
        function createdb();
    }
    
    class dbmysql implements db{
        public function conn()
        {
            echo "连接了mysql";
        }
    }
    
    class dboracle implements db{
        public function conn()
        {
            echo "连接了oracle";
        }
    }
    
    class mysqlfac implements Factory{
        public function createdb()
        {
            return new dbmysql();
        }
    }
    
    class oraclefac implements Factory{
        public function createdb()
        {
            return new dboracle();
        }
    }
    
    $fac = new mysqlfac();
    $db = $fac->createdb();
    $db->conn();
    
    $fac = new oraclefac();
    $db = $fac->createdb();
    $db->conn();
  • 相关阅读:
    哈希表(python)
    双端循环列表实现栈(python)
    链表实现队列(python)
    循环双端链表(python)
    单链表(python)
    LRU(最近最少使用)(python实现)
    Ajax在Django框架中简单应用2
    图书管理系统增删改查
    Jenkins接入LDAP
    安装python3.6
  • 原文地址:https://www.cnblogs.com/finnlee/p/8502997.html
Copyright © 2011-2022 走看看