zoukankan      html  css  js  c++  java
  • php工厂模式

    php工厂模式


    工厂模式:工厂类调用自身方法来生产对象实例。

    示例:

    interface DbFactory{
        public function new_db();
    }
    
    
    interface DbCls{
        public function connect_db();
        public function query();
        //...
    }
    
    //mysql数据库
    class factory_mysql implements DbFactory{
        public function new_db(){
            return new db_mysql();
        } 
    }
    
    class db_mysql implements DbCls{
        public function connect_db(){
            echo 'mysql connect';
        }
        public function query(){
            echo 'mysql query';
        }
    }
    
    //sqlite数据库
    class factory_sqlite implements DbFactory{
        public function new_db(){
            return new db_sqlite();
        } 
    }
    
    class db_sqlite implements DbCls{
        public function connect_db(){
            echo 'db_sqlite connect';
        }
        public function query(){
            echo 'db_sqlite query';
        }
    }
    
    //调用mysql
    $obj = new factory_mysql();
    $db = $obj->new_db();
    
    $db->connect_db();
    $db->query();
    
    //调用sqlite
    $obj = new factory_sqlite();
    $db = $obj->new_db();
    $db->connect_db();
    $db->query();
    
    
    //如果新增加一个数据库类
    //只需要添加新的类,不用修改原有的类
    //sqlite数据库
    class factory_oracle implements DbFactory{
        public function new_db(){
            return new db_oracle();
        } 
    }
    
    class db_oracle implements DbCls{
        public function connect_db(){
            echo 'db_oracle connect';
        }
        public function query(){
            echo 'db_oracle query';
        }
    }
    
    $obj = new factory_oracle();
    $db = $obj->new_db();
    $db->connect_db();
    $db->query();

  • 相关阅读:
    ntopng网络流量实时监控
    LVS初始使用步骤
    Pycharm快捷方式
    Python之路,Day9, 进程、线程、协程篇
    Python之路,Day7
    Python 之路 Day5
    Python之路,Day6
    Python之路,Day3
    Python之路,Day2
    Python之路,Day1
  • 原文地址:https://www.cnblogs.com/gyfluck/p/9680668.html
Copyright © 2011-2022 走看看