原則4 聚組復用原則

2021-09-25 08:49:57 字數 1249 閱讀 3507

前一陣子參與乙個專案,對某產品第乙個版本的**進行了重構,原因是專案工期緊,要求第乙個版本以最短的時間拿出來,導致產品在部分需求未確定的情況下草草開始,匆匆結束。專案要求有大概五六個子系統,每個子系統間必須使用socket通訊,考慮到資料安全性和具體協議的不確定性,商議新版**通訊暫時使用tcp協議進行互動,偽**如下:

public class connector

public boolean setconnecotr(iconnector con)

conn = con;

conn.connect("192.168.1.111",234);

return true;

public boolean dealcmd(string strdata)

this.conn.senddata(strdata);

this.conn.recvdata();

return true;

public class client {

public static void main(string args) {

parser pp = new parser();

iconnector conn = new tcpconnector();

pp.setconnecotr(conn);

pp.dealcmd("hello service!");

如果需要使用udp進行資料傳輸,那麼直接實現乙個基於iconnector的udpconnector類,同時修改client一行**即可。這就不會影響parse,符合開閉原則。

下面補充說一下聚組復用/繼承復用的優缺點:

合成/聚合復用:

(1).優點:

新物件訪問成分物件的唯一方法是通過成分物件的介面; 這種復用是黑箱復用,因為成分物件的內部細節是新物件所看不見的;這種復用支援包裝;這種復用所需的依賴較少; 每乙個新的類可以將焦點集中在乙個任務上; 這種復用可以在執行時動態進行,新物件可以使用合成/聚合關係將新的責任委派到合適的物件。

(2).缺點:

通過這種方式復用建造的系統會有較多的物件需要管理。

繼承復用:

(1).優點:

新的實現較為容易,因為基類的大部分功能可以通過繼承關係自動進入派生類;修改或擴充套件繼承而來的實現較為容易。

(2).缺點:

繼承復用破壞包裝,因為繼承將基類的實現細節暴露給派生類,這種復用也稱為白箱復用; 如果基類的實現發生改變,那麼派生類的實現也不得不發生改變;從基類繼承而來的實現是靜態的,不可能在執行時發生改變,不夠靈活。

設計原則(三)組合復用原則

一 什麼是組合復用原則 組合復用原則也叫合成 聚合復用原則 carp 就是在乙個新的物件裡面使用一些已有的物件,使之成為新物件的一部分 新的物件通過向這些物件的委派達到復用已有功能的目的。這個原則的簡短表述就是 要盡量使用組合,盡量不要使用繼承。二 實現復用的兩種方式 在物件導向的設計裡,有兩種基本...

合成復用原則

合成復用原則是指盡量使用物件組合 聚合而不是繼承關係達到軟體復用的目的,可以是系統更加靈活,降低類與類之間的耦合度,乙個類的變化對其他類造成的影響相對較小。繼承叫做白箱復用,相當與把所有的實現細節暴露給子類,物件組合 聚合稱為黑箱復用,我們是無法獲取到類以外的物件的實現細節,雖然我們要根據業務場景來...

合成復用原則

合成復用原則 composite reuse principle,crp 又叫組合 聚合復用原則 composition aggregate reuse principle,carp 它要求在軟體復用時,要盡量先使用組合或者聚合等關聯關係來實現,其次才考慮使用繼承關係來實現。抽象汽車類 class ...