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

    特点 :将调用者和创建者分离,调用者直接向工厂类请求获取调用对象,减少代码耦合,提高系统的维护性和扩展性。

    <?php
    // **** 共同接口 **** //
    interface DB {
        function conn();
    }
    
    interface factory {
        function createDB();
    }
    
    // **** 服务端开发 **** //
    class dbMysql implements DB {
        public function conn() {
            echo '连接上了 mysql 数据库!';
        }
    }
    
    class mysqlFactory implements factory {
        public function createDB() {
            return new dbMysql();
        }
    }
    
    class dbSqlite implements DB {
        public function conn() {
            echo '连接上了 sqlite 数据库!';
        }
    }
    
    class sqliteFactory implements factory {
        public function createDB() {
            return new dbSqlite();
        }
    }
    
    // 这是开发中后来增加的 oracle 数据库;
    // 不需要修改上面原来的代码;
    // 这就是程序的开闭原则:修改关闭,增加开放。
    class dbOracle implements DB {
        public function conn() {
            echo '连接上了 oracle 数据库!';
        }
    }
    
    class oracleFactory implements factory {
        public function createDB() {
            return new dbOracle();
        }
    }
    
    // **** 客户端调用 **** //
    $factory = new mysqlFactory();
    $db = $factory->createDB();
    $db->conn();
    
    echo '<br>';
    
    $factory = new sqliteFactory();
    $db = $factory->createDB();
    $db->conn();
    
    echo '<br>';
    // 这是开发中后来增加的 oracle 数据库连接
    $factory = new oracleFactory();
    $db = $factory->createDB();
    $db->conn();
  • 相关阅读:
    c#中==和equals的比较
    原型指向改变如何添加方法和访问
    把随机数对象暴露给window成为全局变量
    内置对象Array的原型对象中添加方法
    构造函数可以实例化对象
    原型
    无刷新评论
    大量字符串拼接案例
    元素隐藏占位与不占位
    导航栏切换效果案例
  • 原文地址:https://www.cnblogs.com/qingsong/p/11503370.html
Copyright © 2011-2022 走看看