SingleResponsibilityPrinciple - marmot-cn/marmot-framework GitHub Wiki

单一职责原则(SRP)

概述

简单来说让一个类、一个函数只干一件事情。如果这个类、函数实现太多的概念会导致不易理解(代码可读性)。

示例

这里我们以一个函数为例,我们首先有一个检查分销商品的功能,该检查需要细分为:

  • 该商品是否上架
  • 该商品是否不属于自己
  • 该商品是否没有被采购(如果没采购则不能出售)
protocted function verifyDistributionProduct() : bool
{
    return $this->isDistributionProductOnSale()
        && $this->isDistributionProductNotPurchased()
        && $this->isDistributionProductNotBelongToSelf();
}

private function isDistributionProductOnSale() : bool
{
    if (!$this->getDistributionProduct()->isOnSale()) {
        Core::setLastError(PURCHASE_DISTRIBUTION_PRODUCT_STATUS_INCORRECT);
        return false;
    }
    return true;
}

private function isDistributionProductNotPurchased() : bool
{
	# code...
}

private function isDistributionProductNotBelongToSelf() : bool
{
	# code...
}