mediator pattern
オブジェクトがどのように協調するかを抽出。
ケース
formと各input
結果
pros
要素の結合がなくなる
example
class FormMediator {
func inputChanged()
}
class TextInput {
private let mediator: FormMediator
init(mediator: FormMediator) {
self.mediator = mediator
}
func acceptInput() {
mediator.inputChanged() // selfを渡してmediatorに何が変わったかを伝えるのもあり
}
}
class CheckboxInput {
private let mediator: FormMediator
init(mediator: FormMediator) {
self.mediator = mediator
}
func changed() {
mediator.inputChanged() // selfを渡してmediatorに何が変わったかを伝えるのもあり
}
}
class OrdinaryFormMediator: FormMediator {
private let textInput: TextInput
private let textInput: CheckboxInput
func inputChanged() { // elementを引数でもらうのもあり
// something like
// textInput.disable()
}
}
observer patternで通知するのもあり