0

Javascript の実際の実装はやり過ぎかもしれませんが、複合設計パターンがどのように機能するかをよりよく理解するために、新しいElementクラスとクラスを作成したかったのです。ElementList簡単にするために、Elementクラスに次のものがあるとします。

Element = function(nativeElement) {
    this.element = nativeElement;
}
Element.prototype = {
    addClass: function(classString) {...},
    clone: function(deep) {...},
    getHtml: function() {...},
    getId: function() {...},
    getNativeElement: function() {...},
    getStyle: function(style) {...},
    hasClass: function(classString) {...},
    removeClass: function(classString) {...},
    setHtml: function(html) {...},
    setId: function(id) {...},
    setStyle: function(style, value) {...}
}

私の最初のアイデアは、コンポジットにとって意味のあるメソッドのみを実装することでした:

ElementList.prototype = {
    addClass: function(classString) {...},
    clone: function(deep) {...},
    hasClass: function(classString) {...},
    removeClass: function(classString) {...},
    setHtml: function(html) {...},
    setStyle: function(style, value) {...}
}

しかし、各クラスはどのようなインターフェースを実装しているのでしょうか? JS にインターフェースがないことは知っていますが、演習では、あると仮定しましょう。クラスはs またはs のElementListいずれかで動作できる必要がありますよね?オブジェクト指向/デザインパターンの方法でこれを行うにはどうすればよいですか? Element を再設計する必要がありますか、それともさまざまなインターフェイスを実装する必要がありますか?ElementElementList

4

1 に答える 1

0

一般に、共通のインターフェースを構築して両方のクラスに適用する必要があるため、両方の基本インターフェースを用意し、ElementListクラスを通じて使用するために必要なメソッドとプロパティ、および必要に応じて各要素の特殊なインターフェースを使用します。共通のインターフェイスのみを抽象化したように、インターフェイスをクラスに直接実装できます。

于 2012-07-31T00:17:35.230 に答える