繁体   English   中英

封装问题

[英]Encapsulation issues

我有一个小问题。

我有3节课:

Class Animal {
    public $dog;
    function __construct() {
        $this->dog = new Dog();
    }
}
Class Dog {
    public $scream;
    function __construct() {
        $this->scream = new Scream();
    }
}
Class Scream {
    public $scream;
    function __construct() {
    }
    public haaa(){
       return 'hello World';
    }
}

我正在尝试获取haaa()函数。

 $animal = new Animal();
 $animal->haaa();

如果函数haaa()进入Dog类。.它将正常工作。.深度封装是否有局限性?

谢谢!

根据您的示例,它将是:

$animal->dog->haaa();

但是,最好更改设计以使Dog extends Animal

class Dog extends Animal {
  public function scream(){
    // do stuff
  }
}

$dog = new Dog();
$dog->scream();

因为狗属于动物“王国”,因此更具语义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM