當是理想的:PHP類/ OOP:什麼時候「引用」類中的類與擴展類?
class USER {
// stuff about user
}
class PROFILE extends USER {
// stuff about user's profile
}
,當是理想的:
class USER {
$id;
$profile;
function __construct($id) {
$this->id = $id;
$this->profile = new PROFILE($id);
// set profile variables
}
}
class PROFILE {
$id;
// other variables pertaining to profile
function __construct($id) {
$this->id = $id;
}
}
我覺得更舒適的第二個例子嗎?有什麼特別的警告我應該知道嗎?
我是否應該將其中一個視爲不是互斥子集而另一個是兒童?
我可以假設封裝對擴展一個類來處理新協議有好處嗎?如果讓USER類擴展包含數據庫連接函數的數據庫類是否有意義? – xistva 2012-01-07 01:41:46
當然,但類似的東西需要基類提供派生類將使用的某種通用功能。如果新類完全不同,但是你想像對待第一個協議處理類那樣對待它,那麼你想要定義一個接口或抽象基類,這兩個協議都是從中派生的。 – 2012-01-07 01:43:47
我喜歡這個解釋。對於那些OOP的新手來說,問問自己是否繼承的類是「父類」。例如,「是用戶的個人資料?」答案是否定的,所以它不擴展USER。相反,如果它與問題「有一個」相匹配,那麼它可能是一個屬性/屬性。例如,USER「有一個」PROFILE。 – 2012-01-07 01:44:19