2006-04-05から1日間の記事一覧

Abstract Factory パターン

id:hyuki さんのデザインパターン本から Abstract Factory パターンを移植してみます。 #!/usr/local/bin/ruby class Item def initialize(caption) @caption = caption end end class Link < Item def initialize(caption, url) super(caption) @url = url …

instance_eval?

eval と言えば、デスクトップリファレンスに instance_eval というメソッドが載っていました。 オブジェクトのコンテキストで eval する。オブジェクトのインスタンス変数などに直接アクセスできる。 とあるのですが、よくわかりません。あと、よくサンプル…

Builder パターン

id:hyuki さんのデザインパターン本から Prototype パターンを移植してみます。 #!/usr/local/bin/ruby class Director def initialize(builder) @builder = builder end def construct @builder.make_title("Greeting") @builder.make_string("朝から昼にか…

Prototype パターン

id:hyuki さんのデザインパターン本から Prototype パターンを移植してみます。 #!/usr/local/bin/ruby class Manager def initialize @showcase = Hash.new end def register (name, proto) @showcase[name] = proto end def create(protoname) p = @showca…

Object クラスと Kernel の関係

リファレンスマニュアルを見たところ Ruby の全オブジェクトの祖先クラスである Object には実は initialize だけが定義されていて、他にはメソッドがないようです。では、Object#class や Object#methods といったメソッドは一体何者でしょうか。その正体は…

Object.methods

"Hello, World!".methods.each do |method| puts method endで String のメソッド一覧が作れました。

Singleton パターン

Singleton パターンを実装してみました。 #!/usr/local/bin/ruby class Singleton private_class_method :new @@instance = nil def Singleton.instance @@instance = new unless @@instance @@instance end end object1 = Singleton.instance object2 = Sin…

String#each

先の RSS を JavaScript に変換するスクリプトでは def to_js self.to_html.split("?n").collect { |line| line.gsub!(/'/, "?'") "document.writeln('#{line}');" }.join("?n") endという処理を書いていましたが、String の API を眺めていたところ、String…

抽象クラスとモジュール

Ruby のモジュールはインスタンスが生成されないことを約束するという意味では抽象クラスです。一方、Java の抽象クラスというのは、インスタンスが生成されないことを約束する以外に、そのサブクラスに対して自身が持つ抽象メソッドの実装を強制させる役割…

Factory Method パターン

id:hyuki さんのデザインパターン本から Factory Method パターンを移植してみます。まずは素で移植したものです。 #!/usr/local/bin/ruby class Factory def create(owner) p = self.create_product(owner) self.register_product(p) return p end end clas…

ERB を使って RSS を JavaScript に変換する

ERB の使い方を覚えたので、ERB を使って RSS を JavaScript に変換したいです。よくある類の処理ですが、これを ERB を使ってやってみます。 #!/usr/local/bin/ruby require 'open-uri' require 'rss/1.0' require 'rss/2.0' require 'erb' module RSS::Jav…

ERB を使ってみる

Ruby でテンプレートエンジンを使ってみたいです。Rails の Action View では ERB が使われるようです。まずは単体で ERB を使ってみたいと思います。ERB は Ruby 1.8 以降には標準で含まれているようなので require 'erb'するだけで使えました。 #!/usr/loc…