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 を再設計する必要がありますか、それともさまざまなインターフェイスを実装する必要がありますか?Element
ElementList