美文网首页
PHP的工厂模式

PHP的工厂模式

作者: 打工是不可能打工的1 | 来源:发表于2017-11-30 21:02 被阅读0次

工厂模式

工厂模式(Factory Pattern)是软件工程中最常用的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种创建对象的方式,工厂模式有下面几个好处:
1、我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
2、避免你辛苦的准备构造方法的参数
3、将对象的创建统一起来便于维护和整体把控,对扩展开放,对修改封闭
4、把初始化实例时的工作放到工厂里进行,使代码更容易维护
例如你的项目使用了多种数据库,mongodb、redis、memcached,你可以把这些数据库的初始化工作放在数据库工厂中完成,这样加入日后你这些数据库的命名空间或类名发生改变,你不必找到每一处new这个数据库的地方一一修改。php代码如下:

<?php
namespace App\Library\Factory;
class Redis
{
    private $redis;
    public function __construct()
    {
        $this->redis = new \Redis();
        $this->redis->connect('127.0.0.1',6380);
        $this->redis->auth('123456');
    }

    public function getRedisObj(){
        return $this->redis;
    }
}

class Memcached
{

    private $memcached;
    public function __construct()
    {
        $this->memcached = new \Memcached;
        $this->memcached->addServer('127.0.0.1',11211);
        $this->memcached->setOption(\Memcached::OPT_COMPRESSION, false);
    }

    public function getMemcachedObj(){
        return $this->memcached;
    }

}


class Mongodb
{
    private $mongodb;
    public function __construct()
    {
        $this->mongodb = new \MongoClient();
    }

    public function getMongodbObj(){
        return $this->mongodb;
    }
}

创建数据库工厂,生成基于给定信息的实体类的对象。

class DbFactory
{
    public function __construct()
    {
    }

    public function getDB($name){
        if ($name == 'redis'){
            $redis = new Redis();
            return $redis->getRedisObj();
        }elseif($name == 'memcached'){
            $memcached = new Memcached();
            return $memcached->getMemcachedObj();
        }elseif ($name == 'mongodb'){
            $mongodb =  new Mongodb();
            return $mongodb->getMongodbObj();
        }else{
            return null;
        }
    }

}

通过传递类型信息来获取实体类的对象

$DbFactory = new DbFactory();
$redis = $DbFactory->getDB('redis');

相关文章

  • PHP 完整实战23种设计模式

    PHP实战创建型模式 单例模式 工厂模式 抽象工厂模式 原型模式 建造者模式 PHP实战结构型模式 桥接模式 享元...

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

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

  • 设计模式

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

  • 《PHP设计模式大全》系列分享专栏

    php设计模式介绍之编程惯用法第1/3页 php设计模式介绍之值对象模式第1/5页 介绍php设计模式中的工厂模式...

  • 策略模式和工厂模式在促销系统下的应用

    策略模式和工厂模式在促销系统下的应用 标签: 设计模式 策略模式 工厂模式 促销系统 php 设计模式为我们提供了...

  • ThinkPHP设计模式与Trait技术

    阅读原文 设计模式 单例模式 工厂模式 对象注册树 示例 运行 Trait技术 自 PHP 5.4.0 起,PHP...

  • PHP完整实战23种设计模式

    前言 设计模式是面向对象的最佳实践 实战 PHP实战创建型模式 单例模式 工厂模式 抽象工厂模式 原型模式 建造者...

  • pattern设计模式

  • PHP完整实战23种设计模式

    前言设计模式是面向对象的最佳实践实战PHP实战创建型模式创建型 Factory Method(工厂方法)-工厂模式...

  • php设计模式(1) 工厂模式

    php设计模式(1) 工厂模式 工厂模式 优点 将创建具体对象的步骤简化了,你只需要告诉工厂你需要什么,其他的都由...

网友评论

      本文标题:PHP的工厂模式

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