潛魚在淵
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
積分與排名
積分 - 202903
排名 - 283
最新評論
1.?re: 月薪3萬的一道面試題------看看你的IQ [未登錄]
9月1號
--阿偉
2.?re: 架構(Architecture)和框架(Framework)雜談
架構是一個總體的東西,而框架是一個具體的東西。舉個例子:建筑設計師給出的是一個大樓的總體架構,而框架就是這個架構的具體實現。
自己的理解,可能不對。
--momo2003
3.?re: 申請加入“架構師之家”
申請加入: 賬號:rgqancy
--任國強
4.?re: 月薪3萬的一道面試題------看看你的IQ
撒旦發生大幅是否
--zzzzz
5.?re: Java線程安全精解
文中
“1. 不用做什么,只一個獨立的變量,任何時候它都是原子、一致的?!?br>反省一下是不是有問題。 本人覺得這種情況下也不是線程安全的。
--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)
主站蜘蛛池模板:
日本一区二区在线免费观看
|
亚洲精品第一国产综合精品
|
黄色一级免费网站
|
日韩成全视频观看免费观看高清
|
亚洲午夜一区二区电影院
|
成人在线免费看片
|
亚洲AV无码一区二区三区在线
|
日韩吃奶摸下AA片免费观看
|
中文字幕在线观看亚洲日韩
|
国内自产拍自a免费毛片
|
亚洲欧美日韩中文二区
|
在线视频免费国产成人
|
无码精品人妻一区二区三区免费
|
亚洲精品无码久久久久AV麻豆
|
WWW国产成人免费观看视频
|
亚洲爆乳精品无码一区二区三区
|
亚洲区视频在线观看
|
久久久久久99av无码免费网站
|
亚洲欧美国产欧美色欲
|
国产一级大片免费看
|
国产99久久久国产精免费
|
亚洲国产精品无码久久久秋霞2
|
免费视频成人手机在线观看网址
|
精品亚洲成AV人在线观看
|
无人在线观看免费高清视频
|
日韩成人精品日本亚洲
|
中文字幕不卡亚洲
|
亚洲免费中文字幕
|
亚洲成a∧人片在线观看无码
|
亚洲一级特黄无码片
|
7x7x7x免费在线观看
|
亚洲色精品三区二区一区
|
亚洲国产精品尤物yw在线
|
久久爰www免费人成
|
亚洲欧美成aⅴ人在线观看
|
亚洲一本大道无码av天堂
|
美女内射毛片在线看免费人动物
|
亚洲精品久久久久无码AV片软件
|
中文国产成人精品久久亚洲精品AⅤ无码精品
|
四虎成人精品永久免费AV
|
亚洲区日韩精品中文字幕
|