随着时间的流逝,我们的类可能会实现越来越多的接口。当这些接口具有许多方法时,我们类中的方法总数将变得非常大。
例如,假设我们有两个接口和一个实现它们的类:
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; }
主要的好处是我们的接口实现方法将与该类的其余部分分离,并存储在一个特征中,该特征负责为该特定类型的对象实现接口。