Swiftでデザインパターン アダプターパターン
アダプターパターン
クラスが既にある状態で、それに手を加えずに実装を追加する方法
既存のクラスに手を加えないので、非破壊的な実装ができる
前提事項
- sayHelloの
こんにちは
の最後に、!
を付け足したい要望がきた場合 - 他の箇所でも使われているため、直接修正はできない
class Person { // 既存のクラス
func sayHello() -> String {
return "こんにちは"
}
}
アダプターパターンを使う(継承バージョン)
protocol ShoutProtocol {
func shout() -> String
}
class LoudVoicePerson : Person, ShoutProtocol {
func shout() -> String {
return super.sayHello() + "!"
}
}
let loudVoicePerson = LoudVoicePerson()
print(loudVoicePerson.shout())
これでできました。既存のクラスに影響がないため、安全です(リリース間際でも心配しなくてすみます)
ただ、個人的には継承を使うやり方はswiftらしくないと思っており、下記のextensionを使ったほうが好きです。
// extensionを使って、このように実行することも可能
extension Person : ShoutProtocol {
func shout() -> String {
return super.sayHello() + "!"
}
}
Author And Source
この問題について(Swiftでデザインパターン アダプターパターン), 我々は、より多くの情報をここで見つけました https://qiita.com/dracrowa6539/items/a3f59c6f1381e3cddc38著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .