Java言語で学ぶデザイン・パターン入門をもとにKotlinで書いてみる
今回はAdapter シリーズとして不定期に更新していく予定
Adapterパターンとは
すでに提供されているもの
と必要なもの
を埋め合わせるもの
本書ではノートパソコンのACアダプターを紹介しています。
つまり、ACアダプターは直流(提供されているノートPCの電源)
と交流(必要としているコンセントからの電源)
を埋め合わせするわけですね。
本書ではACアダプターの例は出しているものの、その例で実装はされていなかったのでKotlinで書いてみました。
Adapterパターンの流れ
Target(対象)
要求されているメソッド (インタフェース)
今回はVolt.kt
interface Volt {
var volt: Float
}
Adaptee(適合される側)
既存のメソッド このメソッドの機能をTargetのインタフェースに適合させ利用
今回はDirectCurrent.kt (直流)
class DirectCurrent(override var volt: Float) : Volt
Adapter(適合させる側)
Adapteeのメソッドを、Targetから利用できるものに変換する
今回はHas-a関係で実装しており、ACAdapter.ktが該当
ここで要求しているノートPCの直流値から交流へ変換し、どれくらいコンセントからの交流電源が必要か計算している
class ACAdapter(private var dc: DirectCurrent) : Volt {
override var volt: Float
get() = convertDCToAC(dc.volt)
set(value) {}
/**
* Suppose x^2 / 2
*/
private fun convertDCToAC(v: Float) = v * v / 2
fun show() {
Log.d(ACAdapter::class.java.name, volt.toString())
}
}
Client(利用者)
Targetのメソッドを利用して処理を行う
今回はAndroid Studio上で書いているのでMainActivity.kt
onCreate中の処理
val ac = ACAdapter(DirectCurrent(12.0F))
ac.show()
ログ結果
D/ACAdapter: 72.0
うまく、既存の直流12Vを交流72Vに変換できました。
レポジトリはこちら