什麼是最好的?使用接收一些參數並處理它的低級方法。 或者在對象中有一個高級接口,它完全按照它的名字說什麼?擁有高級接口有多好?
例如:
低級別:
<?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();
值得注意的是,高級別選項將隨着應用規模,如果有更多的實體出現,將需要更多的方法,如:添加贊助商將有renderSponsorsSelect
和listsSponsors
。但它的使用使得代碼非常流暢地閱讀,我們可以爲每種方法做不同的實現。
您認爲如何?
謝謝。