潛魚在淵
Concentrating on Architectures.
posts - 77, comments - 309, trackbacks - 0, articles - 0
BlogJava
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
對象傳遞和信息完整性
Posted on 2005-12-05 17:56
非魚
閱讀(1090)
評論(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
積分與排名
積分 - 202905
排名 - 283
最新評論
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線程安全精解(23406)
2.?深入解析UUID及其應用(20522)
3.?應用軟件的合理性(16870)
4.?架構(Architecture)和框架(Framework)雜談(9909)
5.?[轉載]筆記本故障案例50個(9069)
6.?月薪3萬的一道面試題------看看你的IQ (5925)
7.?版本管理(4946)
8.?一首感人的MV,Mr. Children:Kurumi(4432)
9.?為什么MulticastSocket不能正常工作?(4128)
10.?自定義Sybase排序方式(3624)
主站蜘蛛池模板:
亚洲色大成网站www久久九
|
亚洲国产韩国一区二区
|
亚洲AV无码AV男人的天堂不卡
|
午夜福利不卡片在线播放免费
|
久久亚洲国产精品
|
日韩内射激情视频在线播放免费
|
国产精品亚洲片在线
|
国内永久免费crm系统z在线
|
国产亚洲一区二区三区在线观看
|
手机看片国产免费永久
|
亚洲AV永久无码区成人网站
|
久操视频免费观看
|
久久亚洲国产精品成人AV秋霞
|
啦啦啦完整版免费视频在线观看
|
亚洲狠狠ady亚洲精品大秀
|
久久精品免费全国观看国产
|
亚洲一线产品二线产品
|
免费看国产曰批40分钟
|
大片免费观看92在线视频线视频
|
永久黄网站色视频免费
|
亚洲第一街区偷拍街拍
|
亚洲色偷偷狠狠综合网
|
国产免费一区二区视频
|
久久亚洲日韩看片无码
|
小小影视日本动漫观看免费
|
大片免费观看92在线视频线视频
|
亚洲成色www久久网站夜月
|
亚洲免费观看网站
|
亚洲欧美成人av在线观看
|
免费国产在线观看老王影院
|
免费无码一区二区三区蜜桃
|
亚洲明星合成图综合区在线
|
日本特黄a级高清免费大片
|
中文字幕免费观看全部电影
|
亚洲国产成人精品青青草原
|
国产成人免费福利网站
|
最近中文字幕大全免费版在线
|
亚洲制服丝袜一区二区三区
|
亚洲?V无码成人精品区日韩
|
一级毛片在线免费看
|
色偷偷尼玛图亚洲综合
|