保持課堂清潔的特質

隨著時間的推移,我們的類可以實現越來越多的介面。當這些介面有很多方法時,我們類中的方法總數將變得非常大。

例如,假設我們有兩個介面和一個實現它們的類:

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

主要的好處是我們的介面實現方法將與類的其餘部分分開,並儲存在一個特性中,該特性全權負責為該特定型別的物件實現介面。