随着时间的流逝,我们的类可能会实现越来越多的接口。当这些接口具有许多方法时,我们类中的方法总数将变得非常大。
例如,假设我们有两个接口和一个实现它们的类:
interface Printable {
public function print();
//其他界面方法...
}
interface Cacheable {
//接口方法
}
class Article implements Cachable, Printable {
//在这里,我们必须实现所有接口方法
public function print(){ {
/* code to print the article */
}
}代替在Article类中实现所有接口方法,我们可以使用单独的Traits来实现这些接口,从而使类保持较小,并将接口实现的代码与类分开。
通过示例,要实现Printable接口,我们可以创建以下特征:
trait PrintableArticle {
//在这里实现接口方法
public function print() {
/* code to print the article */
}
}并让类使用特征:
class Article implements Cachable, Printable {
use PrintableArticle;
use CacheableArticle;
}主要的好处是我们的接口实现方法将与该类的其余部分分离,并存储在一个特征中,该特征负责为该特定类型的对象实现接口。