PHP设计模式

时间:2010-01-13 20:17:54

标签: php design-patterns oop

我有一个执行数据库操作并返回结果的类(array,true,false)。我有另一个类,通过在其构造函数中使用此类来创建JSON字符串。 我们可以说这个类是适配器吗?或者只是包装或...

Class Db
{
    public function getRows($params)
    {
        //...
    }
}


Class DbAdapter
{
    private $_dbh;
    public function __construct($dbh)
    {
        $this->_dbh = $dbh;
    }

    public function getJson()
    {
        return '{"key": "foo", "key2": ' . json_encode($this->_dbh->getRows($params)) . '}';
    }
}

由于

3 个答案:

答案 0 :(得分:1)

我说更多的是装饰师... http://en.wikipedia.org/wiki/Decorator_pattern

答案 1 :(得分:0)

来自:http://www.fluffycat.com/PHP-Design-Patterns/Adapter/

如果您想使用不具备所需方法的类,并且无法更改orignal类,则适配器会很有用。适配器可以采用您可以在原始类中访问的方法,并使它们适应您需要的方法。

如果您计划添加方法以补充其他类,我会说您的代码有资格作为适配器。

答案 2 :(得分:0)

我认为你不能选择一种模式并说这是在这里使用的模式。这是我在你的例子中看到的我的小模式列表。随意评论。

Delegation因为DBAdapter类将实际行的任务委托给DB类。

Decorator因为DBAdapter类使用其他功能来装饰DB类 - 即以JSON方式吐出输出。

Adapter/Wrapper如果您认为它允许其他客户端访问仅理解JSON或XML或其他格式的数据库行。

但如果我们必须选择一个,我会说适配器。它以PHP数据结构的形式获取数据并将其转换为JSON表示。