在下面的代码中,我有一个名为Dog的类。狗可以做很多事情,比如树皮或坐着。狗也具有品种,性别或颜色等特征。
如果你有一只具有许多特征和许多功能的狗,这段代码将来可能会变得混乱,那么什么是OOP适当的分离方式,例如狗的特征与功能?
是否只是创建其他类,例如class DogCharacteristics
class DogFunctions
并拥有一个名为Dog
的父类?
我读过http://www.ibm.com/developerworks/library/os-php-7oohabits/所以它让我思考如何实现良好的OOP习惯。
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习惯,并将狗的功能与特征区分开来?
答案 0 :(得分:0)
有几种方法,但我们现在常常看到的是特征。使用特征,您可以将代码分成不同的文件,同时将整个想法保持在一起。问题在于,如果您使用IDE,您的方法的特征文件将闪烁,因为它不知道从何处获取属性。
class Dog
{
use DogCharacteristics;
use DogMethods;
}
trait DogCharacteristics
{
var $breed;
var $color;
}
trait DogMethods
{
public function walk(){}
public function bark(){}
}
它远非最好的方法,但它是今天在框架中大量使用的方法。
令我印象深刻的是:
这是一种糟糕的做法。过度优化代码通常不是一个好方法。您应该专注于使用单元测试编写清晰,文档化的代码,以便稍后重构,而不是一开始就思考如何最好地进行重构。