多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > 設計模式中聚合和組合--代碼中的實現

設計模式中聚合和組合--代碼中的實現

來源:程序員人生   發布時間:2014-11-09 09:02:55 閱讀次數:4352次

●引言:


最近1直在看設計模式,之前寫過1篇文章:設計模式中的關系在代碼中的實現


以后他們問我說:聚合和組合在代碼上怎樣表現誕生命期的不同。由于當時是真心不懂,不敢回答,現在有1點點心得,和大家分享1下。


●定義:


聚合:表示兩個對象之間是整體和部份的弱關系,部份的生命周期可以超出整體。如電腦和鼠標。


?大話上的聚合:



?大話上的組合:


表示兩個對象之間是整體和部份的關系,部份的生命周期不能超出整體,或說不能脫離整體而存在。組合關系的“部份”,是不能在整體之間進行同享的。



●異同點


共同點:他們都是屬于關聯,整體與部份的關系。

不同點:生命周期不同,聚合是獨立的,不隨整體共存亡的(生命周期不同步)。組合正好相反,與整體共存亡(生命周期同步)。


●代碼中的實現


?聚合


在代碼中的中的實現是比較靈活的,大雁聚合為雁群,只要大雁類是雁群的成員變量就好了。


代碼有兩種方式都是聚合:

第1種方式:這類方式1般用在大雁WideGoose是抽象類(父類)的時候,這時候候,就能夠傳入不同的子類,這樣就會使它調用的時候很靈活。


class WirdGooseAggregate { private WideGoose widegoose; //成員變量定義大雁 public SetWideGoose (WideGoose w) //通過傳參得到大雁的對象 { this.widegoose = w; } }

第2種方式:這類方式就是寫死了,是不能靈活的,但是這樣寫也有它的好處,就是定義了1個初始值。在狀態模式中就用到了這類方式,實際上是定義了1個初始對象。


class WirdGooseAggregate { private WideGoose widegoose; //成員變量定義大雁 public SetWideGoose () //通過傳參得到大雁的對象 { widegoose = new WideBlackGoose(); //WideBlackGoose是WideGoose的子類 } }

?組合關系


在代碼中就沒有這樣靈活了,它是強耦合的,它生命周期是同生同死的關系。我們知道1個對象被實例的時候就是我們意義上的“生”,因此我們就把組合的對象放在被組合對象的構造函數中:


class Bird { private Wing wing; //成員變量定義翅膀 public Bird () //構造函數中實例化翅膀對象 { wing = new Wing(); } }

總結


我們學習東西的時候,很想1下子就都要全懂了,其實學習是1個不斷思考、不斷研究的東西。我們要做的是:知道它、研究它、會用它、交換它。






生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美最猛黑人xxxx黑人猛交69 | 噜啪啪| 范冰冰一级做a爰片久久毛片 | 日韩一级片免费在线观看 | 一区二区三区免费观看 | 亚洲精品456 | 国产成人精选视频69堂 | 黄色毛片免费网站 | a爱做片免费网站 | 日日撸夜夜操 | 特级做爰片毛片在线播放 | 亚洲精品久久久久久下一站 | 久久久国产成人精品 | 视频一区二区国产无限在线观看 | 性鸥美 | 国产1区二区 | 国产第一页无线好源 | 夜夜未满十八勿进的爽爽影院 | 麻豆久久精品免费看国产 | 国产成+人+综合+亚洲 欧美 | 中文字幕视频二区 | 亚洲视频黄色 | 欧美一区二区三区久久综合 | 成人性生活免费视频 | 92看片淫黄大片欧美看国产片 | 天堂网男人 | 亚洲和欧美毛片久久久久 | 福利视频欧美一区二区三区 | 亚洲国产精久久久久久久春色 | 久久性久久性久久久爽 | 日韩精品一区二区三区毛片 | h免费网站 | 国产九九免费视频网站 | 噜噜噜噜噜在线观看视频 | 亚洲人成777在线播放 | 欧美一区日韩精品 | 亚洲不卡视频在线观看 | 美国毛片在线观看 | 中文字幕巨大乳在线看 | 九色网址 | 精品一区二区久久 |