Rubyでのデザインパターンの実践

概要

主にRuby on Railsを使いながら、モデルやライブラリ等を実装してきた過程で感じた疑問として「Javaにはデザインパターンというのがあるし、PHP界隈でもこれを使いこなせることが、設計者としてのスキルの指標として見られる所があるけどRubyでは、デザインパターンの半分くらいはいらないのではないのかな?」と思ってきました

実際にRubyには、次の様な利点があります

  1. 他のLLと同じく型の制約が非常に緩い
  2. HashやArrayがJavaよりも柔軟に記述できる
  3. lamdaやproc等の、関数型言語に近い振る舞いのオブジェクトがある
  4. define_methodやmethod_missing等のメタプラグラミングの技法を使える

Ruby周辺でデザインパターンがありがたくないということは、実践Rails等の書籍でも言及されてたりしますが、具体的な形で示された文書というのを(ワタシは)見かけたことがないので、個人研究ということで、書き換えを行ってみました

また、実際にメタプログラミングの技法を使って各種のデザインパターンを書き換えていくと

デザインパターンでしたかったことは、本当は何だったのかをより本質に近い形で記述できるのではないか?と思い出しました

ゆっくりと、追記や変更を加えていくこともあるでしょうが、そこは私の未熟と思って気長に見えていただけると幸いです

デザインパターン一覧

  1. Abstract Factory パターン
  2. Builder パターン
  3. Factory Method パターン
  4. Prototype パターン
  5. Singleton パターン
  6. Adapter パターン
  7. Bridge パターン
  8. Composite パターン
  9. Decorator パターン
  10. Facade パターン
  11. Flyweight パターン
  12. Proxy パターン
  13. Chain of Responsibility パターン
  14. Command パターン
  15. Interpreter パターン
  16. Iterator パターン
  17. Mediator パターン
  18. Memento パターン
  19. Observer パターン
  20. State パターン
  21. Strategy パターン
  22. Template Method パターン
  23. Visitor パターン