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();
     

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

  • 相关阅读:
    python-常用数据类型
    python入门篇
    Vue 架构
    Bootstrap Web框架
    策略模式
    Java线程安全总结
    JVM中线程状态转换图
    java 多线程并发系列之 生产者消费者模式的两种实现
    JVM 垃圾回收器详解
    MyISAM和InnoDB索引实现对比
  • 原文地址:https://www.cnblogs.com/steptoupper/p/2632322.html
Copyright © 2011-2022 走看看