1. awakia

    Posted

    awakia
Changes in title
+Wantedlyエンジニア新人研修(設計)
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,78 @@
+
+
+## 概要
+
+設計力に関しては経験によるところが大きいので、実践+コードレビューでまかなえるところが大きいが、ある程度網羅的でやった感の出るものとしてデザインパターンを使って学習する。
+
+- [増補改訂版Java言語で学ぶデザインパターン入門](http://www.amazon.co.jp/dp/4797327030)を利用
+
+- デザインパターン自体は、C++/Java用だったりして古いので、そのパターンが必要な背景を元に、Ruby(/ObjectiveC)で書き直してそれを使うべきか自分たちで再評価する。
+- またRuby, Railsその他有名なライブラリでそのパターンが使われている部分を探す。
+
+実際に本を読んだりネット上を調べる際の、具体的なチェックポイントとしては、以下の5つを用いる。
+
+1. どういう時に使うか
+2. メリット (+ デメリット)
+3. そのパターンを使わないとどうなるか
+4. Rubyではどう書くか(同じものがある/似たものがある/必要ない)
+5. Ruby/Rails/Gemで実際に使われている場面
+
+## 実践
+
+学習するたびに、以下のJava言語で学ぶデザインパターン入門の目次にリンクを足していく。
+
+やる順番としては基本的には本の掲載順にやる予定。
+
+>
+デザインパターンに慣れる
+>
+ - 第1章 Iterator ― 1つ1つ数え上げる]
+ - 第2章 Adapter ― 一皮かぶせて再利用
+>
+サブクラスにまかせる
+>
+ - 第3章 Template Method ― 具体的な処理をサブクラスにまかせる
+ - 第4章 FactoryMethod ― インスタンス作成をサブクラスにまかせる
+>
+インスタンスを作る
+>
+ - 第5章 Singleton ― たった1つのインスタンス
+ - 第6章 Prototype ― コピーしてインスタンスを作る
+ - 第7章 Builder ― 複雑なインスタンスを組み立てる
+ - 第8章 Abstract Factory ― 関連する部品を組み合わせて製品を作る
+>
+分けて考える
+>
+ - 第9章 Bridge ― 機能の階層と実装の階層を分ける
+ - 第10章 Strategy ― アルゴリズムをごっそり切り替える
+>
+同一視
+>
+ - 第11章 Composite ― 容器と中身の同一視
+ - 第12章 Decorator-飾り枠と中身の同一視
+>
+構造を渡り歩く
+>
+ - 第13章 Visitor ― 構造を渡り歩きながら仕事をする
+ - 第14章 Chain of Responsibility ― 責任のたらい回し
+>
+シンプルにする
+>
+ - 第15章 Facade ― シンプルな窓口
+ - 第16章 Mediator ― 相手は相談役1人だけ
+>
+状態を管理する
+>
+ - 第17章 Observer ― 状態の変化を通知する
+ - 第18章 Memento ― 状態を保存する
+ - 第19章 State ― 状態をクラスとして表現する
+>
+無駄をなくす
+>
+ - 第20章 Flyweight ― 同じものを共有して無駄をなくす
+ - 第21章 Proxy ― 必要になってから作る
+>
+クラスで表現する
+>
+ - 第22章 Command ― 命令をクラスにする
+ - 第23章 Interpreter ― 文法規則をクラスで表現する