LoginSignup
0
2

More than 5 years have passed since last update.

デザパタ入門②

Last updated at Posted at 2017-06-23
1 / 12

本日のお題


オブザーバーパターン🔎


オブザーバーパターン

オブジェクト間の1対多の依存関係を定義し、あるオブジェクトの状態が変化すると、それに依存しているすべてのオブジェクトが自動的に通知され更新されるようにします。

by Head First デザインパターン


クラス図

スクリーンショット 2017-06-22 15.21.43.png


サンプルコード


使われ所


mail


コードを見てみよう!!

mailはSubjectの実装を提供、Observerはgemには内包されてない。
少し崩したパターン
スクリーンショット 2017-06-23 15.40.15.png

moduleメソッドを駆使して実装
https://github.com/mikel/mail/blob/76b1e6c19e582c65c9032594054e56acb08d97fe/lib/mail/mail.rb

オブザーバーはテストコードに
https://github.com/mikel/mail/blob/21222e1b48f08f6f848d26643d6b6fb1d873d18c/spec/mail/message_spec.rb#L1786


まとめ

  • あまりサーバーサイドで使われない?(gemとかサーチしてみた雰囲気)
  • フロントエンドでイベント伝搬等と相性がよさげ

絶賛、教科書的に実際に使われてるgem募集中!


参考


デザパタ入門シリーズ

0
2
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
2