2009-02-26 8 views

答えて

23

言語に依存しないレベルでは、mixinはクラスに機能を追加するだけであり、プログラマの利便性とコードの重複を避けるためです。抽象クラス(基本クラス)はis-a関係を形成し、多態性を可能にします。継承が過度に使用される理由の1つは、ミックスインを実際にサポートしていない言語で定型文を記述することなくミックスインを実装する簡単な方法だということです。問題は、ポリモーフィックな関係を副作用として宣言し、APIをより混乱させ、おそらくあいまい性を追加することです。したがって、DやRubyのような新しい言語では、ミックスインをネイティブフィーチャとしてサポートしているため、ポリモーフィックのis-a関係を宣言することなく、クラスに一連の機能を追加する便利な方法が提供されます。

+0

+1良い簡単な説明。このCOPの話はすごく聞こえます。私はこの種のものがコア言語レベルにまで進化していくのを見たいと思っています。 AOPのものと同じです。 – BuddyJoe

+0

@Bruno C++のようなコア言語ですか? – leeand00

+0

簡潔で非常に明確です。すごい説明! – Hugo

0

ミックスインはスタンドアローンクラスではありません。彼らはあなたが宣言するクラスにいくつかの機能を追加するだけです。 Pythonでは、クラスデコレータによって簡単に適用できます。例えば、あなたのクラスをSingleton mixinで飾ることができ、クラスをシングルトンにすることができます。

関連する問題