在下面的代碼中,我有一個叫做Dog的類。狗可以做很多事情,如樹皮或坐。狗也有特徵,如品種,性別或顏色。PHP OOP設計 - 從功能中分離'特性'
如果你有一隻擁有許多特徵和許多功能的狗,那麼這個代碼在將來可能會變得混亂,那麼OOP適當的方法來區分這些東西,比如狗的特徵和功能呢?
難道只是創建其他類,如class DogCharacteristics
class DogFunctions
並有一個父類叫Dog
?
我已閱讀http://www.ibm.com/developerworks/library/os-php-7oohabits/所以它讓我思考如何實現良好的面向對象的習慣。
class Dog
{
private $breed;
public function getBreed()
{
return $this->breed;
}
public function setBreed($breed)
{
$this->breed = $breed;
}
public function getDogInfo()
{
return "This dog is " . $this->getBreed();
}
public function bark()
{
return "The dog barks!";
}
public function sit()
{
return "The dog sits.";
}
}
如何改善上面的代碼,以便它堅持良好的生活習慣OOP和分離出狗的功能VS特點呢?
另一件我忘了提到,因爲你談論PHP7。 PHP7應該具有屬性存取器功能,通過將「getXYZ」和「setXYZ」功能簡化爲簡化版本,將大大簡化實體代碼。所以,不要太擔心,這是正常的,並不意味着如果你的實體中有太多屬性,那麼你就會嚴重編碼。 –
另一件事,記住不要因爲狗是動物而陷入Liskov Susbstitution陷阱我將把一些代碼移到一個子類中。這通常是不好的做法,最終會促進糟糕的編碼習慣和圍繞你的應用程序的混亂。 –