使用observer的PHP对象组合?
如果我的术语不正确,请原谅。。。(因为可能是这样) 假设我正在使用合成,我的高级对象类似于:使用observer的PHP对象组合?,php,object,composition,observers,Php,Object,Composition,Observers,如果我的术语不正确,请原谅。。。(因为可能是这样) 假设我正在使用合成,我的高级对象类似于: abstract child { /* array of Activity objects */ public $activities; abstract function punish() {} } favoriteChild extends child { function punish() { // Have a talk } } re
abstract child
{
/* array of Activity objects */
public $activities;
abstract function punish() {}
}
favoriteChild extends child
{
function punish() {
// Have a talk
}
}
redHeadedStepChild extends child
{
function punish() {
// Beat with wrench
}
}
现在让我们假设$activities
由更多的对象组成,其中一个是从jar
窃取CookiesFromjar
如何从
StealingCookiesFromJar
对象内部调用具体的子方法Premist
?(我不熟悉观察者……这是我应该在这里学习的吗?你需要一个具体的孩子在偷CookiesFromjar对象中。创建或将其传递到方法中
class StealingCookiesFromJar{
function doSomething(){
$child = new redHeadedStepChild();
$child->punish();
}
}
或
当您这样调用子类时,有时您会传入
$this
,并在方法定义中调用它$invoker
。这样,从jar中窃取Cookies
就可以访问调用类(在本例中是redHeadedStepChild
)。但是,严格地说,如果您遵循观察者模式,观察类不应该需要这些信息。
class StealingCookiesFromJar{
function doSomething(redHeadedStepChild $child){
$child->punish();
}
}