作者dlikeayu (太阳拳vs野球拳)
看板PHP
标题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)
1F:推 tkdmaf:abst"r"act,修一下。 07/12 21:00
OK!
※ 编辑: dlikeayu 来自: 1.34.4.90 (07/12 21:10)