zoukankan      html  css  js  c++  java
  • PHP设计模式——工厂模式

    <?php
    
    /**
     * 工厂模式
     * 提供获取某个对象的新实例的一个接口,同时使调用代码避免确定实际实例化基类的步骤。
     * 
     * 工厂类用于创建不同类的实例,并将其返回。
     */
    
    /**
     * 服务端开始
     */
    interface DB{
        function conn();
    }
    interface Factory{
        function createDB();
    }
    //
    class MysqlDB implements DB{
        public function conn() {
            echo '连接上Mysql...';
        }
    }
    //
    class SqliteDB implements DB{
        public function conn() {
            echo '连接上Sqlite...';
        }
    }
    //
    class MysqlFactory implements Factory{
        public function createDB() {
            return new MysqlDB();
        }
    }
    //
    class SqliteFactory implements Factory{
        public function createDB() {
            return new SqliteDB();
        }
    }
    /**
     * 客户端开始
     */
    //连接Mysql
    $fact = new MysqlFactory();
    $db = $fact->createDB();
    $db->conn();
    echo '<br/>';
    //连接Sqlite
    $fact = new SqliteFactory();
    $db = $fact->createDB();
    $db->conn();
    echo '<br/>';
    /**
     * 扩展:添加Oracle连接
     */
    class OracleDB implements Db{
        function conn() {
            echo '连接上Oracle....';
        }
    }
    class OracleFactory implements Factory{
        public function createDB() {
            return new OracleDB();
        }
    }
    //连接Oracle
    $fact = new OracleFactory();
    $db = $fact->createDB();
    $db->conn();
    echo '<br/>';
  • 相关阅读:
    Acwing 284.金字塔 (区间DP)
    Acwing 283.多边形 (区间DP)
    Acwing 277.饼干 (DP+排序不等式)
    Acwing 274.移动服务 (DP)
    Acwing 273.分级 (DP)
    Acwing 271.杨老师的照相排序 (DP)
    Acwing 272.最长公共上升子序列 (DP)
    Mybatis-缓存
    mybatis与spring整合
    mybatis-sql映射文件
  • 原文地址:https://www.cnblogs.com/tlxma/p/5210665.html
Copyright © 2011-2022 走看看