PHP

设计模式之简单工厂

2017-11-27  本文已影响0人  守望星空l

简单工厂属于创建型模式,是一个比较容易理解和掌握的模式。

对于调用方来说,在简单工厂模式下,得到一个对象是非常容易的,只需要通过工厂类传入对应的参数,即可得到想要的实例,不需要关心繁琐的创建对象的过程。

代码如下:
<?php

//抽象产品基类
abstract class DataModel
{
     abstract public function handle();
}


//具体产品
class MysqlModel extends DataModel
{
    public function  handle()
    {
        echo 'this is mysql';
    }
}

class oracleModel extends DataModel
{
    public function  handle()
    {
        echo 'this is oracle';
    }
}


//工厂类
class Datafactory
{
    public static function getIns($type)
    {
        switch ($type) {
            case 'mysql':
                return new MysqlModel();
            case 'oracle':
                return new oracleModel();
            default:
                return null;
                break;
        }
    }
}

$myModel = Datafactory::getIns('mysql');
$myModel->handle();


这样 简单工厂的代码就完成了。
不过当dataModel要新增一种数据库支持时,就需要改动factory了,这样其实违背了面向对象程序设计中的开闭原则。要回避这个问题,就要使用工厂方法了。

上一篇下一篇

猜你喜欢

热点阅读