Adapter パターン
id:hyuki さんのデザインパターン本から Adapter パターンを移植してみます。まずは継承を使った Adapter です。書籍での interface Print
は使いません。
#!/usr/local/bin/ruby class Banner def initialize(string) @string = string end def show_with_paren puts "(#@string)" end def show_with_aster puts "*#@string*" end end class PrintBanner < Banner def initialize(string) @string = string end def print_weak self.show_with_paren end def print_strong self.show_with_aster end end p = PrintBanner.new("Hello") p.print_weak p.print_strong
これを実行すると
(Hello) *Hello*
となります。
一方の、委譲を使った Adapter へ変更するには、PrintBanner クラスを
class PrintBanner < Banner def initialize(string) @string = string @banner = Banner.new(string) end def print_weak @banner.show_with_paren end def print_strong @banner.show_with_aster end end
とします。
Adapter パターンはシンプルなのもあって「ruby っぽさ」みたいなのをアピールする案が出ませんでした。