CallBack-DI-Template區(qū)別
本文目的是為了說(shuō)明CallBack并非完全的IoC實(shí)現(xiàn)
這三個(gè)名詞能在一起,是因?yàn)镮oC的特性
在UI框架中尤其明顯的體現(xiàn)
但CallBack只獲得了部分控制權(quán)的反轉(zhuǎn)
實(shí)際上callback這種方式是一種過(guò)程化方法學(xué)中的實(shí)現(xiàn)
而在面向?qū)ο箢I(lǐng)域中的替代物則是DI或模板方法模式
(IoC的具體表現(xiàn))
DI和模板方法模式的區(qū)別在于
DI用于解除創(chuàng)建依賴(lài)
模板方法用于解除行為依賴(lài)
回到callback和IoC
從它們出現(xiàn)的理由上來(lái)看,目的是為了消除耦合
但它們確實(shí)都是對(duì)流程的控制
在過(guò)程化callback它的控制流將沿著調(diào)用的方向不斷延伸,而不在乎是否會(huì)返回
但面向?qū)ο蟮姆椒ㄖ校Φ姆较蚴菍?duì)象+消息的程序結(jié)構(gòu)
(所以在OO中我們不說(shuō):調(diào)用某個(gè)對(duì)象,而說(shuō):象某個(gè)對(duì)象發(fā)送消息)
所以,
IoC是期待回應(yīng)的,然后繼續(xù) ‘注入組件’ 的流程
而傳入callback是不期待回應(yīng)的,它只是告訴 ‘被注入組件’ 下一步的方向,而沒(méi)有說(shuō)一定要回調(diào) ‘注入組件’ 或接口,它可以繼續(xù)將控制流程傳遞下去,到底程序在什么地方退出,'注入組件' 有可能不知道,所以說(shuō)它只獲得了部分的控制權(quán)
這三個(gè)名詞能在一起,是因?yàn)镮oC的特性
在UI框架中尤其明顯的體現(xiàn)
但CallBack只獲得了部分控制權(quán)的反轉(zhuǎn)
實(shí)際上callback這種方式是一種過(guò)程化方法學(xué)中的實(shí)現(xiàn)
而在面向?qū)ο箢I(lǐng)域中的替代物則是DI或模板方法模式
(IoC的具體表現(xiàn))
DI和模板方法模式的區(qū)別在于
DI用于解除創(chuàng)建依賴(lài)
模板方法用于解除行為依賴(lài)
回到callback和IoC
從它們出現(xiàn)的理由上來(lái)看,目的是為了消除耦合
但它們確實(shí)都是對(duì)流程的控制
在過(guò)程化callback它的控制流將沿著調(diào)用的方向不斷延伸,而不在乎是否會(huì)返回
但面向?qū)ο蟮姆椒ㄖ校Φ姆较蚴菍?duì)象+消息的程序結(jié)構(gòu)
(所以在OO中我們不說(shuō):調(diào)用某個(gè)對(duì)象,而說(shuō):象某個(gè)對(duì)象發(fā)送消息)
所以,
IoC是期待回應(yīng)的,然后繼續(xù) ‘注入組件’ 的流程
而傳入callback是不期待回應(yīng)的,它只是告訴 ‘被注入組件’ 下一步的方向,而沒(méi)有說(shuō)一定要回調(diào) ‘注入組件’ 或接口,它可以繼續(xù)將控制流程傳遞下去,到底程序在什么地方退出,'注入組件' 有可能不知道,所以說(shuō)它只獲得了部分的控制權(quán)
posted on 2005-07-16 00:18 fisher 閱讀(681) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): Programing