タグ

rubyとdesignpatternに関するkeyesberryのブックマーク (4)

  • 状態管理用の変数をインスタンスに持たせるなこのタコって話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    たとえば、今、「ユーザーが方向を入力したらプレイヤーが動くゲーム作りたい」みたいなはなしがあるとする。その場合、モデルクラスはまあシンプルな実装として下のようなものが考えられると思う。 「できたよー」って見せにいったら、今度は「あのさー、『高速移動モード』っていうモード欲しいんだよね。そのモードだと二倍速で動くの」って言われたとする。シンプルにやるとこうなりますね。 「できたよー」って見せにいったら、今度は「なあ、すげえ面白いこと考えたんだけど、『蟹モード』って面白くない?横は4倍速で動くんだけど縦は半分の速度で動くの」とか言われたわけです。あなたは「お、おう」と言って、以下のようにコードを修正しました。 これ、ヤバい感じしますね。破滅の匂いがする。「今度は『よっぱらいモード』欲しいな〜。入力に関係なくランダムに動くの」みたいなこと言われたら確実に複雑さが爆発してメンテ不能になりになり死

    状態管理用の変数をインスタンスに持たせるなこのタコって話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    keyesberry
    keyesberry 2013/02/10
    イイ。
  • Design Patterns in Ruby: Introduction « DevInterface Blog

    Hello everyone. With this post I would like to start a serie of articles concerning the description of the most common design patterns and how these can be applied with the Ruby language. In the world of software engineering you don’t need to reinvent the wheel to face daily problems: these problems are often very common and in most cases they require a similar resolution. Christopher Alexander sa

  • Iterator.rd

    Design Pattern: Ruby Companion 4 Iterator パターン 4.1 Iteratorパターンの意図 (ずばっと略) 4.2 Iteratorパターンの実装 Ruby版では,全てのクラス定義とサンプルを1つのソースにまとめています. 4.2.1 サンプルその1: 普通の実装 素朴にRubyで実装したものです.メソッドなどはRubyっぽく変えたところもあります. # Iterator Pattern # sample1 class Book def initialize(name) @name = name end attr_reader :name end class BookShelf def initialize() @books = Array.new() end def [](index) return @books[index] end def a

  • Rubyでデザインパターン

    最終更新日: デザインパターン ■はじめに Erich Gammma,Richard Helm,Ralph Johnson,John Vlissidesの4人(通称GoF:the Gang of Four)の「オブジェクト指向における再利用のためのデザインパターン」というは有名です。 ある種の良く使うコーディングテクニックを23個のパターンにまとめたものです。「パターン化」というテクニックは、非常に便利です。私たちも日常知らず知らずのうちに「パターン化」を行っています。何度も仕事をこなしていくうちに「経験」という形で体の中にそのノウハウが身についていくのはまさに「パターン化」ではないでしょうか? オブジェクト指向プログラミング言語を使ったときの良く使うパターン23個が掲載されているわけですが、いかんせんムズかしい。 そこで出てきた救世主が「Java言語で学ぶデザインパターン」結

  • 1