作者dlikeayu (太阳拳vs野球拳)
看板PHP
标题Re: [请益] class继承问题
时间Fri Jul 12 20:16:41 2013
: 我觉得这不是OO相性的问题,而是设计模式错了
: 一直继承并不是个好例子
: 你可以用骨架模式或装饰者模式来进行
: abstact class 人猿{
: public 对像;
: public function 结婚($model);
public function 家传行为();
: }
: class 阿公 extends 人猿{
: public function gf(){
: }
public function 家传行为(){
献祭大典();
}
: }
: class 阿爸 extends 阿公{
: public function father(){
: }
public function 家传行为(){
光宗耀祖();
return parent::家传行为();
}
: }
: class 死囡仔 extends 阿爸{
: public function child(){
: }
: public function 结婚($model){
: $this->对像 model;
: }
public function 家传行为(){
养兔子();
跑夜店();
return parent::家传行为();
}
: }
: interface i瘦女人{
: public function 生子();
: }
: interface i有凶女{
: public function 嘿嘿();
: }
: class 女人甲 implements i瘦女人{
: public function 生子();
: }
: class 女人乙 implements i瘦女人, i有凶女{
: public function 嘿嘿();
: public function 生子();
: }
: =============================================
: 开工
: 各个不同代的人应该要再区别他们的偏好,在同样行为下,但是有不同的目的
: $cm30 = new 死囡仔;
: $marry1 = $cm30->结婚(new 女人乙);
: $marry1->对像->嘿嘿(); //嘿嘿
: $marry1->对像->生子();
: 这也是为什麽JAVA的书一直提到
: "多用合成,少用继承" 的原因...
再来增加後面几篇提到的问题
$cm30->家传行为();
//献祭大典会做
//光宗耀祖会做
//养兔子会做
//跑夜店会做
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.34.4.90