タグ

oopとdelegationに関するkiyo_hikoのブックマーク (4)

  • どういう場合にAUTOLOADを使用するか?...未解決 - end0tknr's kipple - web写経開発

    perlではAUTOLOADという仕組みがあります。 sub AUTOLOADが定義されていると、呼び出し対象のmethodがない場合にこれが呼ばれます。 #!perl #### in ActivePerl use strict; use warnings; my $animal = Animal->new(); $animal->hogehoge(); package Animal; sub new { my ($class) = @_; my $self = {}; return bless $self, $class; } sub AUTOLOAD { our $AUTOLOAD; warn "$AUTOLOAD can't find in ",__PACKAGE__,"\n"; } 1; このサンプルスクリプトを実行すると、次のように表示され、AUTOLOAD実行時の$AUTOLO

    どういう場合にAUTOLOADを使用するか?...未解決 - end0tknr's kipple - web写経開発
    kiyo_hiko
    kiyo_hiko 2012/04/26
    なるほど Decoratorで使うと良さげなのか。StateとかStrategyでも使えそうかしら PerlのOOPはよくわからない
  • Working Effectively With Legacy Code読書会 - 担当割当表/Moving Forward

    kiyo_hiko
    kiyo_hiko 2012/04/17
    巨大なクラスを小さくするために委譲を使うことについて
  • 書籍 リファクタリング−プログラマーの体質改善 | 継承の取り扱い | 継承による委譲の置き換え - Tbpgr Blog

    パンくず リファクタリング-プログラマーの体質改善テクニック 継承の取り扱い 継承による委譲の置き換え 内容 リファクタリング名 継承による委譲の置き換え 適用ケース要約 委譲を使っているが、インターフェイス全体のために多数の委譲メソッドを書いている 適用内容要約 委譲先のクラスをモジュールにして、委譲元のクラスでインクルードする 適用詳細 委譲先の全メソッドを利用しているような場合、継承への置き換えを検討します サンプル HTMLタグを表す機能と、Divタグを表す機能を実装します。 サンプルコード リファクタリング前 # encoding: Shift_JIS class HtmlTag attr_accessor:tag_name def initialize(tag_name) @tag_name=tag_name end def output_start_tag() return

    書籍 リファクタリング−プログラマーの体質改善 | 継承の取り扱い | 継承による委譲の置き換え - Tbpgr Blog
    kiyo_hiko
    kiyo_hiko 2012/04/17
    「委譲先の全メソッドを利用しているような場合、継承への置き換えを検討します」
  • 委譲と継承 - カタコト備忘録

    継承と委譲の使い分け。 GoFのデザパタでも簡単ではないと書いてある。 ファウラーの『リファクタリング』では ・委譲による継承の置き換え サブクラスがスーパークラスの一部のインターフェースだけを使っている。あるいはデータを継承したくない。 ・継承による委譲の置き換え 委譲を使っていて、すべてのインタフェースに対する単純な委譲をたくさん書いている。 とあるわけだが、もっと概念的である 程度正しい視点があるのでは? というのも、 みねこあ:憂を買ってみました ではじめて知った 実装継承 という言葉が非常にしっくりきたわけです。 これじゃないかと。 そこで、少しググってみた結果、 よく言われる、「継承よりコンポジション(has)して委譲」するべき場面として、 型ではなく実装の再利用を目的としている 時だと、言ってしまってもわりと正しそうだということがわかったわけなので、ここに宣言します。

    委譲と継承 - カタコト備忘録
    kiyo_hiko
    kiyo_hiko 2012/04/17
    「継承のリスク - 外部に対しては、情報隠蔽されていても、親子間では情報隠蔽がゆるいのです.実装継承を動機とした継承ではなおさらです.子供は親(の実装)に一般的に強く依存しがちです」
  • 1