潛魚在淵
Concentrating on Architectures.
posts - 77, comments - 309, trackbacks - 0, articles - 0
BlogJava
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
對象傳遞和信息完整性
Posted on 2005-12-05 17:56
非魚
閱讀(1097)
評論(3)
編輯
收藏
所屬分類:
面向對象設計
很少有孤立存在的實體對象,它們之間總是會有所關聯。對象們因其職責而分離,又因其聯系而聚合。而我們在使用對象時,往往不需要把對象及其聚合的所有其他 對象一次性全部初始化,部分的對象聚合足以提供足夠的信息了。這時候,我們使用的對象的信息是不完整的。
當具有不完整信息的對象被做為參數傳遞時,很可能導致我們對對象失去控制。部分對象的聚合在不同情景下的切換可能導致編程上的錯誤,而且對系統的維護帶來 負面的影響。由于對象職責的分割,對象本身無法理解這個問題,我們無法通過對對象本身進行處理(如增加職責)來消除這種不良影響。如何使用對象的部分信息 是由使用者根據情景要求決定的,編碼人員往往對使用情景沒有深刻的認識。在連續對應不同情景的處理鏈中,容易導致編碼錯誤。如下:
1
// Entity objects.
2
public class Obj {
3
private ObjRef1 ref1
;
4
Private ObjRef2 ref2
;
5
6
public Obj() {
7
}
8
9
public Obj(ObjRef1 ref1) {
10
this.ref1
=
ref1
;
11
}
12
13
public Obj(ObjRef1 ref1
,
ObjRef2 ref2) {
14
this.ref1
=
ref1
;
15
this.ref2
=
ref2
;
16
}
17
// Accessors omitted.
18
} // ObjRef1
,
ObjRef2 omitted.
19
20
// Process1
21
public class Prs1 {
22
public Obj method1() {
23
Obj obj
=
new Obj()
;
24
obj.setObjRef1(loadObjRef1())
;
25
// Do something to obj.
26
return obj
;
27
}
// Load method omitted.
private ObjRef1 loadObjRef1() {
// ......
}
28
}
29
30
// Process2
31
public class Prs2 {
32
public void method2() {
33
Obj obj
=
new Clt1().method1()
;
34
// Do something to obj.ref2. Coding error may be found until debug phase.
35
}
36
}
在Process1.method1方法中持久化Obj,在Process2.method2中自行初始化Obj。這個方案面向對象并解決了一致性問題, 但增加性能成本。在Process1.method1中loadObjRef2,不夠面向對象,增加了維護成本。
盡可能不使用這種鏈式的處理,代之以扁平的、可以總控Obj的方式:
1
public class Process {
2
public void proceed() {
3
// Need to change Prs1
,
Prs2's method signatures.
4
Obj obj
=
5
obj
=
new Prs1().method1(obj)
;
6
obj.setObjRef2(
)
;
7
obj
=
new Prs2().method2(obj)
;
8
9
// Future processes can be inserted anywhere inside this method.
10
}
11
}
對于樹形結構或整體-部分結構,有一個統一的處理合理的,但內部的復雜性還是很高。
評論
#
re: 對象的部分聚合問題
回復
更多評論
2005-12-06 10:06 by
小明
樓主不會不知道Spring framework吧?
Spring IOC能很好幫助你解決這個問題阿
#
re: 對象的部分聚合問題
回復
更多評論
2005-12-06 11:43 by
無言獨上西樓
本質上說,IOC并沒有什么新鮮玩意,就是強化對接口編程。SPRING是提供了一個這樣的框架-裝配對象的框架,這樣,任何相同接口的對象就可以裝配在一起工作,類似于汽車裝配線。
但顯然沒有明白LZ的意思。坦率地說,我也沒有明白LZ的意思。
#
re: 對象傳遞和信息完整性
回復
更多評論
2005-12-07 00:13 by
非魚
前面描述的不好,給大家造成了理解上的麻煩。希望這次改過后表達足夠清楚。不行就再改吧。
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
代碼檢查(6)
代碼檢查(5)
代碼檢查(4)
代碼檢查(3)
代碼檢查(2)
深入解析UUID及其應用
軟件架構:控制與改進
軟件架構:決策與選擇
軟件架構:架構與價值
應用軟件的合理性
Powered by:
BlogJava
Copyright © 非魚
日歷
<
2005年12月
>
日
一
二
三
四
五
六
27
28
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
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(9)
給我留言
查看公開留言
查看私人留言
我參與的團隊
架構師之家(0/0)
隨筆分類
About Love(3)
Java技術(13)
Sybase(6)
其他技術(10)
雜七雜八(26)
笑一笑(1)
管理(5)
面向對象設計(23)
隨筆檔案
2008年12月 (1)
2008年11月 (1)
2008年10月 (11)
2008年9月 (7)
2006年6月 (1)
2006年4月 (1)
2006年3月 (4)
2006年1月 (1)
2005年12月 (27)
2005年11月 (23)
收藏夾
硬件(1)
BLOGs
Anders小明的小屋
David. turing
Donald
Flyingis
Learning
Petit
wfeng007
微雨心情
無言獨上西樓的BLOG
江南白衣的BLOG
笨笨的思想片斷
讀書、思考、生活
邢紅瑞的Blog
郁也風的BLOG
飛云小俠
Web Links
Java自由人
WWISA
積分與排名
積分 - 203504
排名 - 284
最新評論
1.?re: 月薪3萬的一道面試題------看看你的IQ [未登錄]
9月1號
--阿偉
2.?re: 架構(Architecture)和框架(Framework)雜談
架構是一個總體的東西,而框架是一個具體的東西。舉個例子:建筑設計師給出的是一個大樓的總體架構,而框架就是這個架構的具體實現。
自己的理解,可能不對。
--momo2003
3.?re: 申請加入“架構師之家”
申請加入: 賬號:rgqancy
--任國強
4.?re: 月薪3萬的一道面試題------看看你的IQ
撒旦發生大幅是否
--zzzzz
5.?re: Java線程安全精解
文中
“1. 不用做什么,只一個獨立的變量,任何時候它都是原子、一致的。”
反省一下是不是有問題。 本人覺得這種情況下也不是線程安全的。
--su30mmkx
閱讀排行榜
1.?Java線程安全精解(23419)
2.?深入解析UUID及其應用(20528)
3.?應用軟件的合理性(16882)
4.?架構(Architecture)和框架(Framework)雜談(9921)
5.?[轉載]筆記本故障案例50個(9078)
6.?月薪3萬的一道面試題------看看你的IQ (5932)
7.?版本管理(4951)
8.?一首感人的MV,Mr. Children:Kurumi(4440)
9.?為什么MulticastSocket不能正常工作?(4134)
10.?自定義Sybase排序方式(3635)
主站蜘蛛池模板:
免费观看成人毛片a片2008
|
中文字幕中韩乱码亚洲大片
|
美女黄频a美女大全免费皮
|
亚洲A丁香五香天堂网
|
久久永久免费人妻精品
|
亚洲综合一区二区三区四区五区
|
国产一区二区三区在线免费观看
|
成人无码a级毛片免费
|
亚洲香蕉久久一区二区三区四区
|
亚洲狠狠爱综合影院婷婷
|
免费人成在线观看网站品爱网
|
亚洲丁香婷婷综合久久
|
亚洲AV无码久久精品成人
|
亚洲国产成人精品无码区二本
|
亚洲综合色区在线观看
|
国产精品爱啪在线线免费观看
|
免费无码午夜福利片
|
亚洲精品影院久久久久久
|
亚洲AV之男人的天堂
|
免费观看激色视频网站(性色)
|
无码中文在线二区免费
|
中文字幕免费在线播放
|
亚洲人成人无码.www石榴
|
亚洲AV无码一区东京热久久
|
青青青免费国产在线视频小草
|
无码 免费 国产在线观看91
|
亚洲国产精品人久久电影
|
在线日韩日本国产亚洲
|
日韩成人免费aa在线看
|
中文字幕成人免费视频
|
fc2免费人成在线
|
性色av极品无码专区亚洲
|
亚洲天堂一区二区三区四区
|
国产成人麻豆亚洲综合无码精品
|
午夜老司机免费视频
|
免费观看国产网址你懂的
|
免费观看一区二区三区
|
xxxx日本在线播放免费不卡
|
亚洲s码欧洲m码吹潮
|
2020国产精品亚洲综合网
|
亚洲日本国产综合高清
|