0

什么是最好的?使用接收一些参数并处理它的低级方法。或者在对象中有一个高级接口,正如它的名字所说的那样?

例如。:

低级:

<?php

class Html {
    public function renderSelect($name, $options) {
        //
    }
}

class Repository {
    public function lists($repositoryName, $keyColumn, $valueColumn) {
        //
    }
}

# usage

$html->renderSelect('campaign_id', $repository->lists('campaigns', 'id', 'name'));
$html->renderSelect('account_id', $repository->lists('accounts', 'id', 'company'));

高水平:

<?php

class Html {
    public function renderSelect($name, $options) {
        //
    }

    public function renderCampaignsSelect() {
        return $this->renderSelect('campaign_id', $repository->listsCampaigns());
    }

    public function renderAccountsSelect() {
        return $this->renderSelect('account_id', $repository->listsAccounts());
    }
}

class Repository {
    public function lists($repositoryName, $keyColumn, $valueColumn) {
        //
    }

    public function listsCampaigns() {
        return $this->lists('campaigns', 'id', 'name');
    }

    public function listsAccounts() {
        return $this->lists('accounts', 'id', 'company');
    }
}

# usage

$html->renderCampaignsSelect();
$html->renderAccountsSelect();

值得注意的是,高级选项将随着应用程序的扩展而增长,如果出现更多实体,将需要更多方法,例如:添加的赞助商将具有renderSponsorsSelectlistsSponsors. 但是它的使用使代码阅读起来非常流畅,我们可以为每种方法做不同的实现。

你怎么看?

谢谢。

4

2 回答 2

1

在通用 API 框架中使用您所谓的“低级”。一种库,旨在用于不同领域的许多其他项目。示例:Symfony、Zend 框架。

在域模型中使用您所谓的“高级”。旨在解决特定问题的项目。但与其称其为高级别的,不如说是特定领域或使用无处不在的语言。示例:phpBB3、Wordpress、您的网站生成带有自定义文本的有趣的猫图片。

于 2013-09-29T14:40:42.733 回答
1

低级(细粒度)方法更具可重用性。高级(粗粒度)方法更容易使用。我认为越接近用户界面层,首选更高级别的方法,它可以隐藏实现细节,并且在您提到时更容易阅读。

于 2013-09-27T01:22:49.680 回答