Swiftで実装するデザインパターン 「Strategy」
条件分岐などの戦略部分をクラス化しちゃおうぜ!っていうパターン
strategy.swift
//: Playground - noun: a place where people can play
import UIKit
struct Human {
let age: Int
let height: Int
let weight: Int
}
// Strategy
protocol Comparator {
func compare(h1: Human, h2: Human) -> Int
}
// ConcreteStrategy
struct AgeComparator: Comparator {
func compare(h1: Human, h2: Human) -> Int {
if h1.age > h2.age {
return 1
} else if h1.age == h2.age {
return 0
} else {
return -1
}
}
}
// ConcreteStrategy2
struct HeightComparator: Comparator {
func compare(h1: Human, h2: Human) -> Int {
if h1.height > h2.height {
return 1
} else if h1.weight == h2.weight {
return 0
} else {
return -1
}
}
}
struct WeightComparator: Comparator {
func compare(h1: Human, h2: Human) -> Int {
if h1.weight > h2.weight {
return 1
} else if h1.weight == h2.weight {
return 0
} else {
return -1
}
}
}
struct MyClass {
let comparator: Comparator
func compare(h1: Human, h2: Human) -> Int {
return comparator.compare(h1: h1, h2: h2)
}
}
Author And Source
この問題について(Swiftで実装するデザインパターン 「Strategy」), 我々は、より多くの情報をここで見つけました https://qiita.com/yosshi4486/items/1adefdb88bfd8e3368e5著者帰属:元の著者の情報は、元の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 .