美文网首页
1、php简单工厂模式

1、php简单工厂模式

作者: 水电梁师傅 | 来源:发表于2018-07-04 11:40 被阅读11次

现在我们有那么一段代码,这段代码没啥功能,两个类,分别代表了两种数据库连接,当调用不同的数据库的时候调用不同的类,这本身没什么问题,但是考虑到调用方的人不应该能看到连接的具体类是什么,我们应该只暴露方法,而不是将类名暴露。

class Mysql
{
    public function conn()
    {
        echo 'mysql已连接';
        echo '<br>';
    }
}

class Oracle
{
    public function conn()
    {
        echo 'oracle已连接';
        echo '<br>';
    }
}

$mysql = new Mysql();
$mysql->conn();

$oracle = new Oracle();
$oracle->conn();

所以代码改进一下,让调用端的人只需要知道conn函数可以连接数据库即可

class Mysql
{
    public function conn()
    {
        echo 'mysql已连接';
        echo '<br>';
    }
}

class Oracle
{
    public function conn()
    {
        echo 'oracle已连接';
        echo '<br>';
    }
}

class Database
{
    public function factory($databasename)
    {
        i\($databasename=='oracle')
        {
            $oracle = new Oracle();
            return $oracle;
        }else if($databasename=='mysql')
        {
            $mysql= new Mysql();
            return \$mysql;
            
        }
    } 
}

$mysql = new Database();
$mysql = $mysql->factory('mysql');
$mysql->conn();

$oracle = new Database();
$oracle = $oracle->factory('oracle');
$oracle->conn();

这个时候我们只需要知道有一个类的方法,根据传入的参数获取连接,然后他们所有的连接都有同一个conn连接函数,这样说暴露出来的接口,就只有conn函数一个。

但是问题来了,为什么是conn函数?同样是数据库相关的类当然是conn函数,但是,这样无法统一他们函数上面的调用,所以这里边应该在父类有一个接口,然后子类进行继承实现,这样我就不需要知道子类具体有什么类,我只需要知道父类有什么接口就可以了


interface Db
{
         public function conn();
}
class Mysql  implements Db
{
    public function conn()
    {
        echo 'mysql已连接';
        echo '<br>';
    }
}

class Oracle  implements Db
{
    public function conn()
    {
        echo 'oracle已连接';
        echo '<br>';
    }
}

class Database
{
    public function factory($databasename)
    {
        if($databasename=='oracle')
        {
            $oracle = new Oracle();
            return $oracle;
        }else if($databasename=='mysql')
        {
            $mysql= new Mysql();
            return $mysql;
            
        }
    } 
}

$mysql = new Database();
$mysql = $mysql->factory('mysql');
$mysql->conn();

$oracle = new Database();
$oracle = $oracle->factory('oracle');
$oracle->conn();
···

相关文章

  • 设计模式

    php关键字 1.工厂模式分类 工厂模式具体可分为三类模式:简单工厂模式,工厂方法模式,抽象工厂模式; 1.1. ...

  • 1、php简单工厂模式

    现在我们有那么一段代码,这段代码没啥功能,两个类,分别代表了两种数据库连接,当调用不同的数据库的时候调用不同的类,...

  • PHP-浅谈单例模式和工厂模式

    PHP中常用的设计模式有单例模式、工厂模式(简单工厂模式、工厂方法模式和抽象工厂方法模式)、适配模式、策略模式。 ...

  • Java设计模式——工厂模式

    工厂模式简单工厂模式工厂方法模式抽象工厂模式 1.简单工厂模式 1.基本介绍1)简单工厂模式也叫静态工厂模式,是属...

  • PHP设计模式之简单工厂模式*解读

    「PHP」简单工厂 PHP简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。 也就...

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

  • iOS设计模式-工厂模式

    工厂模式分为简单工厂模式,工厂模式、抽象工厂模式三类。 简单工厂模式 1. 定义 简单工厂模式并不是常用的设计模式...

  • 创建性模式-工厂

    标签(空格分隔): 简单工厂模式 工厂模式 抽象工厂模式 1、简单工厂模式:简单工厂模式,由父类决定,初始化对象的...

  • 工厂模式

    分类 简单工厂模式 工厂方法模式 抽象工厂模式 1. 简单工厂模式 简单工厂模式其实就是只有一个工厂,根据传进来参...

  • 三、创建型模型

    简单工厂模式 工厂方法模式 抽象工厂模式 单例模式 1.简单工厂模式 简单工厂模式并不属于23种设计模式。 不难看...

网友评论

      本文标题:1、php简单工厂模式

      本文链接:https://www.haomeiwen.com/subject/bdkduftx.html