19
2017
07

故事:猫的出生理解依赖注入 控制反转

大场景: 猫必须吃可以让他们变色的水果 才能成为真正不同颜色的猫! 比如橘猫要吃橘子!


场景: 猫的出生
强耦合关系:
猫A和上帝的故事:
上帝:你想成为高贵的橘猫,就必须自己生产橘子,我把秘方给你!你生产好了 自己吃掉 就能出生并且变成真正的橘猫了!
猫A:好!我这就生产。
猫A:死活生产不出来橘子,原来秘方是错的!
上帝:嘿嘿嘿~ 那就别出生了呗。你自己生产不出来。

猫A:妈卖批! 故事:猫的出生理解依赖注入 控制反转 西安网站建设 第1张

class 橘猫A{
public $猫吃的橘子;
public function __contruct(){
$this->猫吃的橘子 = new 橘子秘方;
}
}
橘子秘方{
}

依赖注入 解除耦合:
猫B和上帝的故事:

上帝:你想成为高贵的橘猫,就必须自己生产橘子,我把秘方给你!你生产好了 自己吃掉 就能出生并且变成真正的橘猫了!

猫B:我不要自己生产,猫A都 “妈卖批”了!你就不能生产好了再给我吃吗? 故事:猫的出生理解依赖注入 控制反转 西安网站建设 第2张

上帝尴尬:那好吧,答应你!
橘猫A(客串):妈卖批!
class 猫B{
public $猫吃的橘子;
public function __contruct(橘子){
$this->猫吃的橘子 = 橘子;
}
}
橘子秘方{
}
$橘猫B = new  猫B(new 橘子秘方);

控制反转
猫C和上帝的故事
上帝说:你想成为高贵的橘猫,就必须自己生产橘子,我把秘方给你!你生产好了 自己吃掉 就能出生并且变成真正的橘猫了!
猫C:别BB,你都给猫B上产了,还让我自己生产,有毛病吧?
上帝尴尬:呵呵- -~~~ 那你想怎样?
猫C:都特么想当橘猫~呵呵  我要当 ”变色猫! “
上帝:我日!有志气!
猫C:少BB 快来吧。
class 猫C{
public $猫吃的变色水果;
public function __contruct(变色水果){
$this->猫吃的变色水果 = 变色水果;
}
}
变色水果秘方(接口){
public function bianseinit(){}
}
上帝:上面就是给你的出生路径了,那你到底是想变成什么猫呢 橘猫 粉猫?
猫C:先来个 橘猫吧!
上帝:妈卖批!!!
橘子秘方 implements 变色水果秘方{
}

猫C:谢谢上帝 我还要 变成粉猫的果实!! 故事:猫的出生理解依赖注入 控制反转 西安网站建设 第3张

上帝:妈卖批
水蜜桃秘方 implements 变色水果秘方{
}
..
.. 贪婪无厌~!
$变色猫C = new  猫c(new 橘子秘方\水蜜桃秘方.......);
猫A(客串):妈卖批!
猫B(客串):妈卖批

故事结局END
上帝被痛扁一顿。


« 上一篇 下一篇 »

评论列表:

1.便民车务  2018-12-28 11:19:54 回复该评论
厉害了博主

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。