保持課堂清潔的特質
隨著時間的推移,我們的類可以實現越來越多的介面。當這些介面有很多方法時,我們類中的方法總數將變得非常大。
例如,假設我們有兩個介面和一個實現它們的類:
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;
}
主要的好處是我們的介面實現方法將與類的其餘部分分開,並儲存在一個特性中,該特性全權負責為該特定型別的物件實現介面。