顯示廣告
隱藏 ✕
※ 本文為 dinos 轉寄自 ptt.cc 更新時間: 2013-07-12 23:29:10
看板 PHP
作者 dlikeayu (太陽拳vs野球拳)
標題 Re: [請益] class繼承問題
時間 Fri Jul 12 20:06:28 2013


※ 引述《htl74421 (<><魚仔<>< 薰~)》之銘言:
: 我目前的疑惑是這樣:
:         class grandfather {  //祖父
:                 public function grandfather()
:                 {
:                         //
:                 }
:                 public function get_data()
:                 {
:                         echo 'hello';
:                 }
:         }
:         class father extends grandfather { //爸爸
:                 public function father()
:                 {
:                         //
:                 }
:         }
:         class child extends father{ //小孩
:                 public function child()
:                 {
:                         //
:                 }
:                 public function test()
:                 {
:                         parent::get_data();
:                 }
:         }
:         $a = new child();
:         $a->test();
恕刪...

我覺得這不是OO相性的問題,而是設計模式錯了
一直繼承並不是個好例子

你可以用骨架模式或裝飾者模式來進行

abstract class 人猿{

        public 對像;
        public function 結婚($model);

}



class 阿公 extends 人猿{
        public function gf(){

        }
}

class 阿爸 extends 阿公{
        public function father(){

        }
}

class 死囡仔 extends 阿爸{
        public function child(){

        }

        public function 結婚($model){
                $this->對像 = model;
        }
}


interface i瘦女人{
        public function 生子();
}

interface i有兇女{
        public function 嘿嘿();
}

class 女人甲 implements i瘦女人{
        public function 生子(){
                return 生一個;
        }
}

class 女人乙 implements i瘦女人, i有兇女{
        public function 嘿嘿(){
                return 傳教士;
        }
        public function 生子(){
                return 生兩個;
        }
}


=============================================
開工
各個不同代的人應該要再區別他們的偏好,在同樣行為下,但是有不同的目的


$cm30 = new 死囡仔;

$marry1 = $cm30->結婚(new 女人乙);
$marry1->對像->嘿嘿(); //嘿嘿
$marry1->對像->生子();





這也是為什麼JAVA的書一直提到
"多用合成,少用繼承" 的原因...


p.s 回原PO問題
你應該就是要有相同結婚的行為
但要的結果或目的是又可擴充選擇的

那麼就可以以"女人"interface來做同樣行為下不同的邏輯結構,演算
做出不同
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.34.4.90
※ 編輯: dlikeayu        來自: 1.34.4.90            (07/12 20:24)
tkdmaf:abst"r"act,修一下。1F 07/12 21:00
OK!
※ 編輯: dlikeayu        來自: 1.34.4.90            (07/12 21:10)

--
※ 看板: dinos 文章推薦值: 0 目前人氣: 0 累積人氣: 108 
分享網址: 複製 已複製
guest
x)推文 r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇