2017-09-10 6 views
1

私は最近、主にthe article Real Mixins with javascript classesを介してjavascriptでMixinのコンセプトを見ました。私が理解しているように、抽象クラスで複数の継承を行う方法は継承よりも構図に似ています。私はまた、the article Composition Over Inheritanceのように、継承を超えたコンセプト構成についても読んでいます。私は、継承と構成についての議論は非常に長くなる可能性があることを認識していますが、私はできるだけ継承を避けることを選択しました(少なくとも今のところは)。あらゆる種類の継承にMixinsを使用するには?

私はES6でできる限り多くのミックスインを使用したいと思います。ほとんどの例では、3つのクラスがclass A extends MixinB(C)のように表示されています。クラスBのみを拡張したいのですが? class A extends MixinB(Object)のようなことをしますか?これは、Mozilla documentation州のような反パターンかもしれません。

私はclass A extends Bのような直接の継承を行うことができますが、このBのように、もはやミックスインではないと私はミックスインとしてそれを使用したい場合、私はBの異なる宣言が必要になります。

+0

"継承は必ずしも正しいパターンではありません"とは、以前に継承したすべての場所で学んだこの新しいことです。 – Ryan

+1

JavaScriptが完全に間違っているブロガーがいることに注意してください。 https://www.reddit.com/r/programming/comments/5dxq6i/composition_over_inheritance/da8bplv/。ミックスインと複数の継承は確かに同じものですが、どちらも合成ではありません。 –

+0

>これは、Mozillaのマニュアルの状態と同様に反パターンかもしれません。 | MDNのドキュメントでは、サルのパッチについて話しています。これは本当に悪いですが、サルのパッチは 'クラスが拡張するものではありません。 –

答えて

0

あなたが探しているものの解決策は、Mixinの機能の定義を変更することだと思います。代わりに持つの

:これは本当だろうどこ

Mixin(MainClass, otherClass1, otherClass2...) 

を::

MixinB(WhateverClass) 

あなたが持っている可能性が

MixinB(C) = Mixin(B, C) 
-1

私はこれの音が好きではなかったです!

だから私は、ミックスインにあなたがそれらを使用したいので、適切でない限り

私はできる限り使用ミックスインを使用したいと思います。継承は、固定された強力な関係に適しています。ミックスインは、他には関係のないいくつかのクラスと共有したい小さな機能がある場合に便利です。

+0

私がミックスインを使ってコードを悪化させようとしているとは思わない、「私ができる限りミックスインを使いたい」と言い、「できる」という言葉で「そうここで継承を使用する方が良いですか?ミックスインを使用するとハッキーになりますか?はい、継承を使用します。 あなたの答えは、私がした質問に答えていないので、もっとコメントのようです。 –

関連する問題