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
亞光
同云博客
小弟鵬
張玉磊
昕
李陽
黃鳴
搜索
積分與排名
積分 - 1104439
排名 - 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 大田斗
主站蜘蛛池模板:
永久免费毛片在线播放
|
三年片免费高清版
|
成人A级毛片免费观看AV网站
|
亚洲高清无在码在线电影不卡
|
中国黄色免费网站
|
亚洲午夜无码久久久久
|
国产激情久久久久影院老熟女免费
|
全部免费a级毛片
|
又粗又长又爽又长黄免费视频
|
免费国产精品视频
|
一个人看的免费观看日本视频www
|
免费一级毛片清高播放
|
72pao国产成视频永久免费
|
国产亚洲精品看片在线观看
|
本免费AV无码专区一区
|
国产成A人亚洲精V品无码性色
|
亚洲精华国产精华精华液
|
免费无遮挡无码视频网站
|
精品亚洲视频在线
|
亚洲欧洲国产成人综合在线观看
|
亚洲日韩在线观看免费视频
|
国产亚洲精品自在久久
|
一个人免费观看视频www
|
亚洲精品又粗又大又爽A片
|
免费观看亚洲人成网站
|
91视频精品全国免费观看
|
亚洲日本一区二区三区
|
久久午夜免费视频
|
狼色精品人妻在线视频免费
|
国外亚洲成AV人片在线观看
|
99久久人妻精品免费二区
|
色老板亚洲视频免在线观
|
亚洲成A人片77777国产
|
人人揉揉香蕉大免费不卡
|
精品亚洲成在人线AV无码
|
免费在线黄色网址
|
最近中文字幕完整免费视频ww
|
亚洲国产午夜精品理论片在线播放
|
亚洲成a人片在线观看无码专区
|
99久久国产热无码精品免费
|
老司机午夜免费视频
|