続・RubyでStrategy
先日の日記にRubyにはJavaでいうインターフェイスや抽象メソッドはないと
書きましたが、moduleという機能で似たような目的を果たすことができるようです。moduleはインターフェイスとTemplate Methodパターンを組み合わせたようなものでしょうか(下記のような使い方をしたからかもしれません)。便利そうです。
・・・って書いていたのですが、風呂で考えているとちょっと違うような気もしてきました。勘違いしてたら誰か教えてください。
書き直したEncryptクラス
# モジュールの定義 # Encryptをmixinするクラスは、 #必ずencodeString(str)メソッドを実装しなければならない! module Encrypt def encode(str) return encodeString(str) end end class NullEncrypt include Encrypt def encodeString(str) return str end end class ReverseEncrypt include Encrypt #encodeStringメソッドがないとEncypt.encodeが実行できないため #例外が発生する end