Scala 組合和繼承–概述

2018-09-28 18:36 更新

組合和繼承–概述

在前面我們介紹了 Scala 面向對象的一些基本概念

從本篇開始繼續(xù)介紹 Scala 面向對象方法的知識,定義一個新類的方法主要有兩種模式:一個通過組合的方式,新創(chuàng)建的類通過引用其它類組合而成,通過這些引用類組合來完成新功能,而是通過繼承的方式來擴展基類。為了更好的介紹 Scala 類的組合和繼承,以及抽象類,無參數(shù)方法,擴展類,方法的重載等,我們打算使用一個現(xiàn)實的例子來說明,因此本篇首先定義需要解答的問題。

我們的需要是定義一個函數(shù)庫,這個庫用來定義在平面上(二維空間)布局元素,每個元素使用一個含有文字的矩形來表示。為方便起見,我們定義一個類構造工廠方法“elem”根據(jù)傳入的數(shù)據(jù)來創(chuàng)建一個布局元素。這個方法的接口定義如下:

elem(s: String) : Element

你可以看到,布局元素使用類型 Element 來構造其模型,你可以調用 above,和 beside 方法來創(chuàng)建一個新的布局元素,這個新的布局元素有兩個已經(jīng)存在的布局元素組合而成,例如:下面的表達式使用多個布局元素構造一個更大區(qū)域的布局元素:

val column1 = elem("Hello") above elem("***")
val column2 = elem("**") above ("World")
column beside column2

將打印出下面結果:

Hello ***
*** world

這個例子使用布局元素,是非常好的一個例子可以用來說明一個對象可以使用更簡單的對象通過組合的方式來構造。后面的幾篇文章將以此為基礎,我們將定義一些類,這些類支持使用數(shù)組,線段,矩形(簡單部件)來構造,并定義組合算子(操作符) above 和 beside。

使用組合算子的概念來設計函數(shù)庫是一種非常好的方法,它能回報以考慮在應用域構建對象的基礎方法。什么是簡單對象?用什么方式能讓更多有趣的對象通過簡單對象構造出來?組合子是怎么掛在一起的?什么是最通用的組合?它們滿足任何有趣的規(guī)則嗎?如果你對這些問題都有好的答案,你的庫設計就在正軌上了。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號