はじめに 色々なサイトに散らばっている情報を整理しただけ。一部Unityぽい。 Rx流行ってるけど、そもそも根底のオブザーバパターンを理解しよう。 オブザーバパターンを使うと何が嬉しいのか? Observer側もObservable側も相手のクラスの内部設計を把握しなくて良い。 「データが変更されたらUIに反映する」というシナリオにおいて、 Model -> View という直接の依存関係を無くせる。 オブザーバパターンに頼らない場合 class Model { // データ変更時に呼ばれる void DataChanged() { // 変更後のデータを取得 var newData = this.GetData(); // ModelからViewを直接変更(MVC原則に違反しています!) FooView.Update(newData); } } GUIクラス(View)の追加が発生した時
![古典的オブザーバパターンをいまさら基礎からみる【デザインパターン】 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/fa9b3484401f5d013c28eb818e821490f6b3247c/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUU1JThGJUE0JUU1JTg1JUI4JUU3JTlBJTg0JUUzJTgyJUFBJUUzJTgzJTk2JUUzJTgyJUI2JUUzJTgzJUJDJUUzJTgzJTkwJUUzJTgzJTkxJUUzJTgyJUJGJUUzJTgzJUJDJUUzJTgzJUIzJUUzJTgyJTkyJUUzJTgxJTg0JUUzJTgxJUJFJUUzJTgxJTk1JUUzJTgyJTg5JUU1JTlGJUJBJUU3JUE0JThFJUUzJTgxJThCJUUzJTgyJTg5JUUzJTgxJUJGJUUzJTgyJThCJUUzJTgwJTkwJUUzJTgzJTg3JUUzJTgyJUI2JUUzJTgyJUE0JUUzJTgzJUIzJUUzJTgzJTkxJUUzJTgyJUJGJUUzJTgzJUJDJUUzJTgzJUIzJUUzJTgwJTkxJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz00ZTRlMzRkMGMzNTE1NTM1Yjk1M2E4MGU2M2RhOGNiZQ%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwdmFybWlsJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0xMTg4NzgxNzc4YWZjNTgzZjhkODlhMDIzNzJhNTkzMQ%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Ddb02ad5ad89bd904c13f61fc47eeb8a1)