言語化する朧げな

Baby steps to Giant strides!

設計

Decorator Pattern - Design Pattern in Ruby

あるオブジェクトの機能に追加の機能を付け足したい、 さらにいろいろな組み合わせで追加機能を実装したいという時に使えるパターン。 Interface 元の機能を持ったオブジェクト(ConcreteComponent)と追加機能を実装するオブジェクト(Decorator)という登…

Command pattern - Design Pattern in Ruby

「何かを実行するもの」をオブジェクトとして扱う方法。 これによる恩恵として、実行の記録の保管が容易になり、undo, redoなどの実装もしやすくなる。 よく使用されるケースとしては、GUIのパーツで、パーツのデザインや配置などの処理と、何かしらのアクシ…

Iterator pattern - Design Pattern in Ruby

複数の要素を持つオブジェクトが、それぞれの要素に順繰りにアクセスする方法を提供するパターン。 External iterator has_next, next_item のような順繰りに必要なメソッドを提供することで、外部からの要素へのアクセスを可能にする。 loop処理などを自分…

Composite pattern - Design Pattern in Ruby Chapter 6

共通のオペレーションを行う要素と、その要素の集合体を同じように扱うことで、複雑な構造をシンプルに扱う。 用語 Component 共通のインターフェース Leaf ミニマムの要素 Composite 要素の集合体 注意点 compositeとleaf,異なる属性のものを全く同じように…

Observer Pattern - Design Pattern i Ruby Chapter 5

注意点 更新頻度を考える。 考えなしにすべての変更時にobserverオブジェクトに通知すると、かなりの数の冗長な通知が飛び交ってしまう可能性がある。 どういったタミングで通知を行うかの戦略は考えておくべき。 変更の一貫性 上記の高新頻度にも似ているが…

Strategy Pattern - Design Pattern in Ruby Chapter 5

www.amazon.co.jp まとめ Templateパターンと同じ問題を解決するが、compositionとdelegateの形式で行う分、疎結合で柔軟な設計になる。 似たようなことを行うオブジェクト(family objects)をまとめ同じインターフェースを定義することで、使う側のオブジェ…

React.jsで将棋盤を作ってみた

React,Reduxのキャッチアップ - エンジニアの勉強日記 上記記事で基本をキャッチアップしたので、もう少し実践的なプログラムを作ろうということで、将棋盤を作ってみた。 GitHub - kitabatake/react-shogi 構成 webpackでes6, jsxをトランスパイル viewコン…

Chapter9 - Practical Object Oriented in Ruby

Designing Cost Effective Tests まとめ 効果的なテストを書くことの目的は、これまでやってきた設計に関する考えと同じで、コストを減らすこと。 テストはあるオブジェクトに対して、どういった文脈で、どのように扱えばいいかを最小限の形で記述するので、…

Chapter 9 - Practical Object Oriented Design in Ruby

Combining Object with Composition まとめ 1つのオブジェクトを複数のオブジェクトで構成するという話。 自転車オブジェクトがPartsオブジェクト持つという例で、sparesのようなPartsオブジェクトが返答すべきメッセージは内部でPartsオブジェクトへ処理を…

Chapter 7 - Practical Object Oriented in Ruby

Sharing Role Behavior with Modules まとめ dock typeの章で説明したような共通の振る舞いを発見した際に、それをモジュール化することで、コードを1つの箇所に置くことができる。 シーケンス図の各ノードに、具体的なクラス名を書くのではなく、求められて…

Chapter 6 - Practical Object Oriented Design in Ruby

Acquiring Behavior Through Inheritance まとめ 継承とはメッセージを自動的に転送すること。 継承を用いると、クラスの構造が複雑になるので、必要な情報が揃った時に行うのがいい。 具体的には、2つの似たような種類のクラスがあって、1つの親クラスと、2…