VB分布式應用程式開發隨記 繼承的兩個方面

2021-04-02 17:29:47 字數 984 閱讀 4259

繼承是一種以實體間的「是」關係為基礎的物件導向的概念。到目前為止,我已使用術語「實現繼承」來代替使用更通用的術語「繼承」,這是因為使用子類擴充套件超類是唯一一種平衡「是」關係的方法。當類實現介面時,它還將利用「是」關係。例如,如果類

cbeagle

實現介面

idog,

那麼說獵犬「是」小狗是正確的。您可以在任意需要與

idog

相容的物件的情況下使用

cbeagle

物件。

基於介面的程式設計方式是以繼承的第二種形式「介面繼承」為基礎的。一般來說,繼承不需要重用方法實現。相反,對於繼承唯一真正的要求是,子類例項必須與所擴充套件的基型別相容。所擴充套件的基型別可以是類,也可以是使用者定義的介面。無論是哪種情況,您都可以使用基型別引用來與多種不同型別的物件進行通訊。這使得兩種形式的繼承都可以獲得多型。

雖然實現繼承和介面繼承都提供了多型,但是當要使用封裝時,它們卻有很大的不同。實現繼承是以白盒重用為基礎的。它使子類可以知道它所擴充套件的超類的細節。這使得子類可以隱含地重用超類的方法實現和資料屬性。在重用狀態和行為方面,實現繼承的功能要比介面繼承的功能強大許多。但是,這種重用是要付出代價的。白盒重用中的封裝損失限制了基於實現繼承的應用程式的可伸縮性。

正如術語「黑盒重用」所體現的,介面繼承強化了封裝的概念。在類中嚴格地遵守實現的封裝使得可以進行更具伸縮性的應用程式設計。基於介面的程式設計方式解決了很多與白盒重用有關的問題。但是,要評價這種程式設計方式,您必須接受「獲得的利益要大於付出的代價」的思想。這對於很多程式設計師是需要進行一些思想鬥爭的。

當類實現介面時,它就承擔了提供一組方法實現的義務。子類的作者必須在決定決定實現介面時編寫一些額外的**。當與實現繼承進行比較時,它看上去似乎需要進行更多的工作。當從類繼承時,大多數工作都已經完成,但是,當從介面繼承時,工作卻剛剛開始。乍一看,實現繼承看上去更像是乳酪三明治,而介面繼承看上去更像是一碗蒸製的椰菜。您必須超越擁有乳酪三明治就認為達到較高階別的介面的思想。介面繼承與實現繼承相比,主要的優點在於,它不會以犧牲應用程式的擴充套件性來獲得緊密的聯絡。

分布式應用程式協調服務 zookeeper

一 zookeeper簡介 zookeeper是乙個分布式服務框架,是apache hadoop 的乙個子專案,它主要是用來解決分布式應用中經常遇到的一些資料管理問題,如 統一命名服務 狀態同步服務 集群管理 分布式應用配置項的管理等。二 zookeeper的特性 2.1 順序一致性 從同乙個客戶端...

分布式應用程式互動之WebService

1 建立web應用程式然後新增web服務。2 web服務中需要被呼叫的方法需要加 webmethod特性 例如 webmethod description 輸出helloworld 500.19 檔案訪問許可權不夠。500.21 可能framework沒有完全安裝 cmd命令列中執行 windir ...

隨記(9)分布式開發流程

程序可以相互連線,假設兩個普通程序ab,a程序出於某種原因終止,就會向程序b傳送乙個錯誤訊號,由於ab建立了連線,b又是普通程序,所以最後兩個程序一起掛掉 spawn建立的是普通程序,普通程序通過執行process flag trap exit,true 變成系統程序,意思就是可以接受和處理錯誤訊號...