scala的使用trait實現模板模式

2021-10-02 19:29:23 字數 1209 閱讀 1544

使用trait實現模板模式

要實現以下需求:

實現乙個輸出日誌的功能

目前要求輸出到控制台

將來可能會輸出到檔案、輸出到redis、或者更多的需求

如何實現將來不修改之前的**,來擴充套件現有功能呢?

定義

在乙個特質中,具體方法依賴於抽象方法,而抽象方法可以放到繼承trait的子類中實現,這種設計方式也稱為模板模式

在scala中,trait是可以定義抽象方法,也可以定義具體方法的

trait中定義了乙個抽象方法

trait中定義了其他的幾個具體方法,會呼叫抽象方法

其他實現類可以來實現抽象方法

真正呼叫trait中具體方法的時候,其實會呼叫實現類的抽象方法實現

示例

示例說明

編寫乙個日誌輸出工具,分別有info、warn、error三個級別的日誌輸出

日誌輸出的方式要求設計為可擴充套件的,例如:可以輸出到控制台、將來也可以擴充套件輸出到檔案、資料庫等

實現步驟

新增乙個logger特質

新增乙個log抽象方法

新增乙個info、warn、error具體方法,這幾個方法呼叫log抽象方法

建立consolelogger類,實現logger特質

新增main方法

建立consolelogger類物件

分別呼叫info、warn、error方法輸出日誌

參考**:

結果:

scala學習(十五) trait

下面是乙個trait的簡單例子,裡面包含的trait的基本用法,trait的繼承 trait logger def warn msg string trait logger2 trait logger3 import scala.reflect.class dog extends logger wi...

Scala 系列 特質 Trait

本文主要對scala中特質的概念與使用進行介紹 特質是scala裡面 復用的基礎單元。與 python 不同,python 子類可以繼承自多個父類,而 scala 不允許乙個類從從個超類繼承,只能繼承唯一的超類。但是 scala 允許乙個類混入任意數量的特質,混入就是指類使用了特質提供的方法。那麼特...

scala的物件混入trait

物件混入trait scala中可以將trait混入到物件中,就是將trait中定義的方法 字段新增到乙個物件中 定義 語法val var 物件名 new 類 with 特質 copy 示例給乙個物件新增一些額外的行為 步驟 建立乙個logger特質 新增乙個log實現方法,列印引數 建立乙個use...