保持课堂清洁的特质
随着时间的推移,我们的类可以实现越来越多的接口。当这些接口有很多方法时,我们类中的方法总数将变得非常大。
例如,假设我们有两个接口和一个实现它们的类:
interface Printable {
public function print();
//other interface methods...
}
interface Cacheable {
//interface methods
}
class Article implements Cachable, Printable {
//here we must implement all the interface methods
public function print(){ {
/* code to print the article */
}
}
我们可以使用单独的 Traits 来实现这些接口,保持类更小并将接口实现的代码与类分离,而不是在 Article
类中实现所有接口方法。
例如,要实现 Printable
接口,我们可以创建这个特性:
trait PrintableArticle {
//implements here the interface methods
public function print() {
/* code to print the article */
}
}
并使类使用特征:
class Article implements Cachable, Printable {
use PrintableArticle;
use CacheableArticle;
}
主要的好处是我们的接口实现方法将与类的其余部分分开,并存储在一个特性中,该特性全权负责为该特定类型的对象实现接口。