保持课堂清洁的特质

随着时间的推移,我们的类可以实现越来越多的接口。当这些接口有很多方法时,我们类中的方法总数将变得非常大。

例如,假设我们有两个接口和一个实现它们的类:

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; 
} 

主要的好处是我们的接口实现方法将与类的其余部分分开,并存储在一个特性中,该特性全权负责为该特定类型的对象实现接口。