7

私は小規模なエンタープライズ アプリケーションを編成していますが、できるだけ DRY にしたいと考えています。その結果、私は mixin ライブラリを見てきました。

私はこのライブラリに出会い、実行時にミックスインとミックスアウトができるので、これは良いオプションかもしれないと考えました。また、たとえば基本クラス (BaseView) を 1 つだけ用意して、それをミックスインすることもできます。

質問

  1. 便利な Mixin の実際の適用例は何ですか? (これ以上抽象的な例はやめてください)
  2. クラスを拡張する必要さえありますか、それともこのライブラリを使用してすべての拡張機能とミックスインを管理できますか?
4

4 に答える 4

4

ミックスインは、コードと継承をどのように整理するかという、別の概念的なアイデアにすぎません。もちろん、古典的またはプロトタイプの継承を使用してそれを組み合わせることができますが、いわばスタンドアロンでも機能します。

たとえば、「委任された」オブジェクトのプロパティ/ルックアップ (プロトタイプの継承など) を作成する代わりに、他の複数のオブジェクトから新しいスタンドアロン オブジェクトを真に「形成」します。これは「多重継承」と呼ばれることもあり、Javascriptのプロトタイプ継承だけでは簡単に実現できません。

例として:

var pianist = {
   play: function() {}
};

var programmner: {
   code: function() {}
};

そして、次のように別のObjectを作成できます

var Jim = Object.create( null ); // create a fully self-defining object

extend( Jim, pianist );
extend( Jim, programmer );

この疑似extendメソッドは (ES5) のようになります。

function extend( target, source ) {
    Object.getOwnPropertyNames( source ).forEach(function( key ) {
        Object.defineProperty( target, key, Object.getOwnPropertyDescriptor(source, key)) });

    return target
}

私は実際にあなたの質問に適切に答えていませんでしたが、あなたの質問に対する本当の答えはないように感じました. 実際に使用するのと同じくらいリアルで、「アプリケーション固有」のユースケースは実際にはありません。

于 2012-11-29T18:35:55.967 に答える