LoginSignup
0
0

More than 3 years have passed since last update.

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で通知するのもあり

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0