你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Linux开发
VB.Net中文教程(2) Composite样式(4)
 

aly1 = New AssemblyPart("bulb")
p1 = New PiecePart("body", 88.25)
aly1.Add(p1)
p1 = New PiecePart("head", 100.5)
aly1.Add(p1)

aly2 = New AssemblyPart("light")
aly2.Add(aly1)
p1 = New PiecePart("cover", 10)
aly2.Add(p1)
Messagebox.Show(aly2.Name() + "'s cost = " + str(aly2.Cost()))

p1 = aly2.GetChild(0)
Messagebox.Show(p1.Name + "'s cost = " + str(p1.Cost()))

p2 = aly2.GetChild(1)
Messagebox.Show(p2.name + "'s cost = " + str(p2.Cost()))

p2 = p1.GetChild(0)
Messagebox.Show(p2.Name + "'s cost = " + str(p2.Cost()))
End Sub
End Class

此程序输出: light's cost = 198.75
bulb's cost = 188.75
cover's cost = 10
body's cost = 88.25

PiecePart 代表最下层的基本对象。而AssemblyPart则代表中层的半成品对象组件﹐或代表成品。Part为一个抽象类别,定义PiecePart与AssemblyPart类别的共同部份(包括属性和行为),供PiecePart与AssemblyPart子类别来继承之。此外,提供一个接口IPart给Client使用,以封装Part、PiecePart和AssemblyPart类别,创造Part、PiecePart和AssemblyPart类别的弹性调整空间,这是非常重要的。
Form1_Click()程序建立了有关「汽车车灯」的对象结构表﹕


图8、VB程序所诞生的对象关系图

p1 = aly2.GetChild(0)取出「灯泡」小对象﹐并由p1代表这个小对象。p2 = p1.GetChild(0) 取出「灯帽」小对象﹐并由p2代表之。依上述之样式﹐可表达出无限层次的递归式Whole-part关系。
为了让软件能永续生存下去﹐必须特别重视软件的组织与其整体架构(architecture)。于是﹐设计软件时,必须专注于对象之间的互助合作关系。一旦建立了理想的关系﹐就可以让对象之间互相传递讯息、互相沟通了。例如﹐Form1 对象传送Cost讯息给aly2对象﹐aly2对象就依循ArrayList对象所建立的关系来将Cost讯息递给内含之各小对象。当各小对象回报其成本金额﹐aly2将之累计再传送回到Form1 对象﹐然后显示在窗口画面上。此刻﹐相信您已经进一步了解Whole-part关系﹐善用ArrayList集合类别来表达之,并更会运用VB来落实样式,创造出更美好的软件。■

[注1] Erich Gamma,Design Patterns: Elements of Reusable Object-Oriented Software, Addition-Wesley, 1995.

(编辑:aniston)

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089