zoukankan      html  css  js  c++  java
  • 【PHP设计模式 04_GongChang.php】 工厂方法

    <?php 
    /**
     * 【工厂方法】
     * 之前 03.php 简单工厂,如果再增加一个oracle客户端,就需要再次修改服务端Factory的代码。
     * 在面向对象设计法则中,有一个重要的【开闭原则】———— 对于修改是封闭,对于扩展是开放的
     * 
     */
    
    header("Content-type: text/html; charset=utf-8");
    
    /*共同接口--连接数据库*/
    interface db{
        function conn();
    }
    //工厂接口--创建数据库
    interface Factory{
        function createDB();
    }
    
    /*服务端开发,面向上面的接口。(不知道将会被谁调用)*/
    class dbmysql implements db{
        public function conn(){
            echo '04-连接上了mysql <br>';
        }
    }
    class dbsqlite implements db{
        public function conn(){
            echo '04-连接上了sqlite <br>';
        }
    }
    
    //定义多个工厂类,分别实现上面的工厂接口
    class mysqlFactory implements Factory{
        public function createDB(){
            $db = new dbmysql();
            return $db->conn();
        }
    }
    class sqliteFactory implements Factory{
        public function createDB(){
            $db = new dbsqlite();
            return $db->conn();
        }
    }
    
    /* 客户端开发 */
    $fact = new mysqlFactory(); 
    $fact->createDB();
    
    $fact = new sqliteFactory(); 
    $fact->createDB();
    
    ////==== 假如现在新增 oracle的相关数据(前面的代码不用改):
    class dboracle implements db{
        public function conn(){
            echo '04-连接上了oracle';
        }
    }
    class oracleFactory implements Factory{
        public function createDB(){
            $db = new dboracle();
            return $db->conn();
        }
    }
    //客户端调用
    $fact = new oracleFactory();
    $fact->createDB(); //输出“04-连接上了oracle”
  • 相关阅读:
    王重阳160809311第9次作业
    160809311王重阳第8次作业
    160809311王重阳第七次作业
    160809311王重阳作业6
    王重阳160809311第5次作业
    王重阳160809311作业四
    第六次Java作业
    李喆第12次作业
    李喆第11次作业
    李喆第9次作业
  • 原文地址:https://www.cnblogs.com/rxbook/p/6002970.html
Copyright © 2011-2022 走看看