Scala概述(六)合成(3 總結)

2021-08-27 02:12:18 字數 594 閱讀 8298

在scala中,類的抽象與合成機制可以被視作面向服務的元件模型的基礎。軟體元件是乙個個有明確定義的,提供特定服務的計算單元。一般而言,乙個軟體元件並不是完全自含的,也就是說它的實現依賴於其他一系列提供相應服務的元件。

在scala中,軟體元件即對應著類和trait,類和trait的具體成員相當於他們獲得的服務,抽象成員相當於他們所需要的服務。元件的組合通過混入的方式來實現,從而使得開發者可以通過較小的元件來產生較大的元件。

scala的基於混入的合成機制通過名稱來識別服務,舉例而言,乙個抽象方法m,可以被任何乙個定義了方法m的類c來實現,只需要將類c進行混入即可。scala的元件合成機制通過這種方式將需要實現的服務與服務的提供者自動結合起來,再加上「類的具體成員總是覆蓋抽象成員」這一規則,scala就形成了一套遞迴的、外掛程式式的元件機制,使得元件服務不需要顯式進行組裝。

上述機制可以簡化大型的、存在大量遞迴依賴關係的元件之間的整合,並且能夠有效保證(效能方面的)可擴充套件性,因為服務與呼叫者之間的結合是依靠編譯器來推斷的。這一機制與傳統的黑盒式元件相比,最大好處是每個元件都是可擴充套件的實體:通過整合、過載而實現進化,並且可以對已有元件增加新服務或公升級現有服務。總體來說,這些特性有效地支援了一種平滑的、漸進式的軟體演進過程。

Scala概述(五)抽象(3)

一種語言裡有兩套抽象語法體系肯定會讓人產生對這種語言複雜性的疑問 能不能就用一種形式化體系來實現?本節當中我們將會展示,函式式的型別抽象機制 也就是泛型 實際上可以通過物件導向的型別抽象機制 也就是抽象型別 來表達。這種表達方式的思路如下所述 假定乙個引數化型別c有乙個型別引數t 可以直接推廣到多個...

CSS3 總結(六) 盒子模型

盒子尺寸計算 計算方式 外盒尺寸 元素空間尺寸 元素空間高度 height padding border margin 元素空間寬度 width padding border margin 內盒尺寸 元素大小 元素height height padding border 元素width width ...

謝希仁的第七版計算機網路 第六章總結概述

應用層的許多協議都是基於客戶伺服器方式。每乙個區設定相應的許可權網域名稱伺服器,用來儲存該區中的所有主機的網域名稱到 ip 位址的對映。網域名稱伺服器有以下四種型別 根網域名稱伺服器 頂級網域名稱伺服器 許可權網域名稱伺服器 本地網域名稱伺服器 網域名稱的解析過程 主機向本地網域名稱伺服器的查詢一般...