实际的实现可能对 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) {...}
}
我的第一个想法是只实现对 Composite 有意义的方法:
ElementList.prototype = {
addClass: function(classString) {...},
clone: function(deep) {...},
hasClass: function(classString) {...},
removeClass: function(classString) {...},
setHtml: function(html) {...},
setStyle: function(style, value) {...}
}
但是每个类都实现了哪些接口呢?我知道 JS 没有接口,但为了练习,我们假设它有。该类ElementList
将需要能够使用Element
s 或ElementList
s,对吗?这是一种面向对象/设计模式的方式,我该怎么做?我是否需要重新设计 Element 或让它实现各种接口?