LoginSignup
53
53

More than 5 years have passed since last update.

Wantedlyエンジニア新人研修(設計)

Last updated at Posted at 2014-04-13

概要

設計力に関しては経験によるところが大きいので、実践+コードレビューでまかなえるところが大きいが、ある程度網羅的でやった感の出るものとしてデザインパターンを使って学習する。

  • 増補改訂版Java言語で学ぶデザインパターン入門を利用

  • デザインパターン自体は、C++/Java用だったりして古いので、そのパターンが必要な背景を元に、Ruby(/ObjectiveC)で書き直してそれを使うべきか自分たちで再評価する。

  • またRuby, Railsその他有名なライブラリでそのパターンが使われている部分を探す。

実際に本を読んだりネット上を調べる際の、具体的なチェックポイントとしては、以下の5つを用いる。

  1. どういう時に使うか
  2. メリット (+ デメリット)
  3. そのパターンを使わないとどうなるか
  4. Rubyではどう書くか(同じものがある/似たものがある/必要ない)
  5. Ruby/Rails/Gemで実際に使われている場面

実践

学習するたびに、以下のJava言語で学ぶデザインパターン入門の目次にリンクを足していく。

やる順番としては基本的には本の掲載順にやる予定。

デザインパターンに慣れる

サブクラスにまかせる

  • 第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 ― 文法規則をクラスで表現する
53
53
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
53
53