BaoYaEr
Java IOC設計模式
?IoC模式簡介
???IoC(Inversion of Control)模式并不是什么新的東西,它是一種很普遍的概念,依賴注入(Dependency Injection)是Martin Flower對IoC模式的一種擴展的解釋[2]。IoC是一種用來解決組件(實際上也可以是簡單的Java類)之間依賴關系、配置及生命周期的設計模式,其中對組件依賴關系的處理是IoC的精華部分。IoC的實際意義就是把組件之間的依賴關系提取(反轉)出來,由容器來具體配置。這樣,各個組件之間就不存在hard-code的關聯,任何組件都可以最大程度的得到重用。運用了IoC模式后我們不再需要自己管理組件之間的依賴關系,只需要聲明由容器去實現這種依賴關系。就好像把對組件之間依賴關系的控制進行了倒置,不再由組件自己來建立這種依賴關系而交給容器(例如我們后面會介紹的PicoContainer、Spring)去管理。
???我們從一個簡單的例子看起,考慮一個Button控制Lamp的例子:?
public
?
class
?Button?
{?
???
private
?Lamp?lamp;?
???
public
?
void
?push()?
{?
???????lamp.turnOn();?
???}
?
}
?
???但是馬上發現這個設計的問題,Button類直接依賴于Lamp類,這個依賴關系意味著當Lamp類修改時,Button類會受到影響。此外,想重用Button類來控制類似與Lamp的(比如同樣具有turnOn功能的Computer)另外一個對象則是不可能的。即Button控制Lamp,并且只能控制Lamp。顯然違反了“高層模塊不應該依賴于低層模塊,兩者都應該依賴于抽象;抽象不應該依賴于具體實現,細節應該依賴于抽象” 這一原則(DIP原則)。考慮到上述問題,自然的想到應該抽象出一個接口SwitchableDevice,來消除Button對Lamp的依賴,于是設計如下:
public
?
class
?Button?
{?
???
private
?SwitchableDevice?lamp;?
???
public
?Button()
{?
???lamp
=
?
new
?Lamp();?
???}
?
}
?
發表于 2006-12-08 14:31
大田斗
閱讀(4222)
評論(1)
編輯
收藏
所屬分類:
設計模式
評論
#
re: Java IOC設計模式[未登錄]
這不是吧,只是講了接口的方式,但Spring是動態代理實現的依賴注入
L
評論于 2014-05-20 09:17
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
jdonjive分析(4)緩存機制
JdonJive論壇設計模式分析(3) ---安全管理機制
JdonJive論壇設計模式分析(2)
JdonJive論壇設計模式分析(1)
設計模式趣解(百度上的一篇文章)
prototype設計模式
設計模式之Decorator(油漆工)
設計模式之Adapter(適配器)
java模式之Reactor
設計模式之Observer
<
2025年7月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
導航
BlogJava
首頁
發新隨筆
發新文章
聯系
聚合
管理
統計
隨筆: 32
文章: 427
評論: 144
引用: 0
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(5)
給我留言
查看公開留言
查看私人留言
隨筆檔案
2008年12月 (1)
2008年4月 (2)
2008年2月 (1)
2008年1月 (1)
2007年12月 (3)
2007年11月 (1)
2007年10月 (3)
2007年7月 (2)
2007年6月 (1)
2007年4月 (2)
2007年3月 (3)
2007年2月 (5)
2007年1月 (3)
2006年12月 (4)
文章分類
axis(6)
(rss)
eclipse(7)
(rss)
Hibernate(30)
(rss)
html/js/css(107)
(rss)
java(106)
(rss)
linux(7)
(rss)
Lucene(7)
(rss)
spring(36)
(rss)
Spring CLOUd(1)
(rss)
Strtus(30)
(rss)
其它(48)
(rss)
開源opensource(48)
(rss)
數據庫DateBase(30)
(rss)
設計模式(12)
(rss)
文章檔案
2018年8月 (1)
2012年5月 (1)
2012年4月 (2)
2011年7月 (6)
2010年3月 (1)
2010年2月 (1)
2010年1月 (3)
2009年12月 (1)
2009年10月 (1)
2009年8月 (3)
2009年3月 (1)
2009年2月 (1)
2008年12月 (3)
2008年11月 (10)
2008年10月 (3)
2008年9月 (2)
2008年8月 (2)
2008年7月 (4)
2008年6月 (13)
2008年5月 (15)
2008年4月 (9)
2008年3月 (10)
2008年1月 (18)
2007年12月 (33)
2007年11月 (6)
2007年10月 (18)
2007年9月 (10)
2007年8月 (18)
2007年7月 (15)
2007年6月 (25)
2007年5月 (19)
2007年4月 (26)
2007年3月 (38)
2007年2月 (33)
2007年1月 (27)
2006年12月 (27)
2006年11月 (12)
java
Ajax特效網站
cndiy nio
GRO
Hani Suleiman's blog
Java之路
java論壇
J道
mule
mule 入門
oksonic(動畫教程)
一路由你
中國eclipse
八進制
在線源碼
多線程實戰
天火
小米的blogjava
幻境伯克----jface/swt
很全的博克-強
每日一得
滿江紅
邢紅瑞
飛翔
鳥詩選(js)
鳥食軒 (dhtml)
工具
apache中文手冊
extjs學習
iconFindre
java 安全
javaresearch
java技巧網
js之王
matrix(study)
prototype api
spring中文
北京IT企業速查
在線流程圖工具
雅虎翻譯
朋友
Happyshow
hibernate異常
skywalker
sunshow
xf
亞光
同云博客
小弟鵬
張玉磊
昕
李陽
黃鳴
搜索
積分與排名
積分 - 1104423
排名 - 28
最新評論
1.?re: hibernate.cfg.xml配置
好全啊 .. 棒棒噠 ~ !
--junqinag.yang
2.?re: Quartz任務調度快速入門
我現在來看還是覺得不錯
--小任
3.?re: js中this的總結
評論內容較長,點擊標題查看
--pam
4.?re: Quartz任務調度快速入門
樓主辛苦
--yd
5.?re: Quartz任務調度快速入門
頂了,內容寫的很好
--sen
閱讀排行榜
1.?網頁不緩存(3563)
2.?Form嵌套引起的問題 (2867)
3.?解決IE下CSS背景圖片閃爍的Bug(2458)
4.?Spring AOP的動態載入原理(2416)
5.?如何制作漂亮的Excel表格(2057)
評論排行榜
1.?北京戶口--吃官司(5)
2.?開始→運行→輸入的命令集錦(3)
3.?讓網頁上的所有圖片動起來(2)
4.?Dom4j 編碼問題徹底解決 (1)
5.?心情不爽(1)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 大田斗
主站蜘蛛池模板:
爱情岛论坛免费视频
|
久久国产精品亚洲一区二区
|
亚洲1234区乱码
|
在线成人爽a毛片免费软件
|
亚洲中文字幕久久精品无码喷水
|
亚洲精品视频久久
|
久久午夜夜伦鲁鲁片免费无码
|
国产成人亚洲精品狼色在线
|
中文在线日本免费永久18近
|
国产亚洲成av人片在线观看
|
男女午夜24式免费视频
|
亚洲网站在线观看
|
日本免费xxxx
|
亚洲色大网站WWW永久网站
|
国产片免费福利片永久
|
免费国产草莓视频在线观看黄
|
亚洲成a人片在线观看国产
|
一区二区3区免费视频
|
在线亚洲人成电影网站色www
|
日本免费在线观看
|
亚洲最大在线观看
|
四虎免费在线观看
|
人妻18毛片a级毛片免费看
|
久久亚洲国产中v天仙www
|
最近中文字幕电影大全免费版
|
亚洲欧洲日产专区
|
日日操夜夜操免费视频
|
久久国产美女免费观看精品
|
亚洲国产成人精品青青草原
|
女人18毛片水真多免费看
|
色费女人18女人毛片免费视频
|
中文字幕亚洲一区
|
四虎1515hh永久久免费
|
国产精品亚洲AV三区
|
国产亚洲精品a在线无码
|
日韩精品成人无码专区免费
|
日本特黄特色AAA大片免费
|
亚洲VA成无码人在线观看天堂
|
野花高清在线电影观看免费视频
|
国产精品亚洲一区二区无码
|
亚洲va久久久噜噜噜久久狠狠
|