Kotlin設計モード-ポリシー
前言
ポリシーモードはソフトウェア設計モードとして、オブジェクトに動作があることを指すが、異なるシーンでは、この動作には異なる実装アルゴリズムがある.例えば、誰もが「個人所得税を払う」が、「米国で個人所得税を払う」と「中国で個人所得税を払う」には異なる計算方法がある.ポリシー・モード:ファミリー・アルゴリズム(ビジネス・ルール)を定義します.各アルゴリズムをカプセル化した.このファミリーのアルゴリズムは置換可能である(interchangeable).
ウィキペディアからのポリシー・モード
一般的には、コード実行中に伝達されたオブジェクトに応じて、伝達されたオブジェクトと同じ操作が実行される.
Kotlinでのポリシーモード
Javaでは、ポリシー・モードでは、単純な関数インタフェースでも複雑なカスタムインタフェースでもよいファミリー・アルゴリズムを定義するインタフェースが一般的に使用されます.Kotlinではlambda式をメソッドのパラメータとすることができるので,関数インタフェース定義を簡略化してコードを簡略化することができる.
Kotlin Lambda
ここではlambda式のみをメソッドパラメータとして示します
lambdaが何者なのか分からないので、自分で娘、谷兄を过ごしてください...
show me code
呼び出しコードは次のとおりです.
ポリシーモードはソフトウェア設計モードとして、オブジェクトに動作があることを指すが、異なるシーンでは、この動作には異なる実装アルゴリズムがある.例えば、誰もが「個人所得税を払う」が、「米国で個人所得税を払う」と「中国で個人所得税を払う」には異なる計算方法がある.ポリシー・モード:ファミリー・アルゴリズム(ビジネス・ルール)を定義します.各アルゴリズムをカプセル化した.このファミリーのアルゴリズムは置換可能である(interchangeable).
ウィキペディアからのポリシー・モード
一般的には、コード実行中に伝達されたオブジェクトに応じて、伝達されたオブジェクトと同じ操作が実行される.
Kotlinでのポリシーモード
Javaでは、ポリシー・モードでは、単純な関数インタフェースでも複雑なカスタムインタフェースでもよいファミリー・アルゴリズムを定義するインタフェースが一般的に使用されます.Kotlinではlambda式をメソッドのパラメータとすることができるので,関数インタフェース定義を簡略化してコードを簡略化することができる.
Kotlin Lambda
ここではlambda式のみをメソッドパラメータとして示します
// func , lambda
//val func : (String) -> String lambda
class Printer(val func : (String) -> String) {
fun printString(string: String) = println(func.invoke(string))
}
lambdaが何者なのか分からないので、自分で娘、谷兄を过ごしてください...
show me code
class Printer(val formatterStrategy: (String) -> String) {
fun printString(string: String) = println(formatterStrategy.invoke(string))
}
呼び出しコードは次のとおりです.
val lowerCasePrinter = Printer{ it.toLowerCase() }
lowerCasePrinter.printString("hello World! THIS IS STRATEGY PATTERN")
val upperCasePrinter = Printer{ it: String -> it.toUpperCase() }
upperCasePrinter.printString("hello World! THIS IS STRATEGY PATTERN")
val prefixPrinter = Printer{ "Prefix: " + it }
prefixPrinter.printString("hello World! THIS IS STRATEGY PATTERN")