Kotlinで Layered Architecture
概要
Layered Architectureとは、よく分かりませんが、DDD的なアレです。 詳細は DDDに聞いて下さい。
実装方法
要するに Layerを作成すれば良い訳です。Layerとは層です。地層とか断層とかいうアレです。 層を使ったアーキテクチャが Layeredアーキテクチャという理解で間違いないでしょう。
そのアーキテクチャを適用して、鏡餅を描画するプログラムを書いてみました。 引数の数値を変えると段数も変わるようにしてあります。
operator fun String.times(n: Int): String = (1..n).fold("", {a, _ -> a + this}) fun String.padBoth(n: Int, padChar: String = " "): String = (padChar * n) + this + (padChar * n) data class Mochi(private val layer: Int = 1) { override fun toString(): String { val base = "${"◯".padBoth(layer)}$LINE_SEP" return (1 until layer).fold(base, {a, n -> "$a${ ("(" + ("__" * n) + ")").padBoth(layer - n)}$LINE_SEP" }) } companion object { val LINE_SEP: String = System.lineSeparator() } }
fun main(args: Array<String>) { println(Mochi(3)) println(Mochi(5)) }
◯ (__) (____) ◯ (__) (____) (______) (________)