zoukankan      html  css  js  c++  java
  • PHP最常用的2种设计模式工厂模式和单例模式

    1.工厂模式

    主要作用是降低耦合度。

    abstract class Operation{
        abstract public  function getValue($num1,$num2);
        public  function getAttr(){
            return 1;
        }
    }
    class Add extends Operation{
        public function getValue($num1, $num2){        
            return $num1+$num2;
        }
    }
    
    class Sub extends Operation{
        public function getValue($num1, $num2){
            return $num1-$num2;
        }
    }
    
    class Factory{
        public static function CreateObj($operation){
            
            switch ($operation){
                case '+': return new Add();
                case '-': return new Sub();
            }
            
        }
    }
    
    $Op=Factory::CreateObj('-');
    echo $Op->getValue(3, 6);

    用在真正开发中一般当做数据库选择类。

    2单例模式

    单例是因为一个就足够了,多了浪费。比如邮局里的电话簿只有一本,有需要的人拿来看,没有必要每个人要查的时候工作人员就拿一本出来,看完了再回收。

    class Mysql{
        public static $conn;
        public static function getInstance(){
            if (!self::$conn){
                new self();
                return self::$conn;
            }else {
                return self::$conn;
            }
            
        }
        private  function __construct(){    
            self::$conn=  "mysql_connect:";//    mysql_connect('','','')    
        }
        
        public function __clone()
        {
            trigger_error("Only one connection");
        }
    }
    
     echo Mysql::getInstance();
     echo Mysql::getInstance();
     

    实际中用作数据库连接类和工厂模式一起使用,根据参数调用单例模式,可以提高资源使用效率。

  • 相关阅读:
    nodejs 获取客户端 ip 地址
    如何使用 nvm-windows 管理 nodejs 版本
    redis 环境搭建
    利用 ssh 传输文件
    如何在 Centos7 中安装 gcc
    如何在 Centos7 中安装 nginx
    django迁移model到别的app中
    ssl生成证书
    pip安装mysql报错 ld: library not found for -lssl
    mac重置蓝牙模块
  • 原文地址:https://www.cnblogs.com/steptoupper/p/2632322.html
Copyright © 2011-2022 走看看