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) {...}
}

我的第一个想法是只实现对 Composite 有意义的方法:

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

但是每个类都实现了哪些接口呢?我知道 JS 没有接口,但为了练习,我们假设它有。该类ElementList将需要能够使用Elements 或ElementLists,对吗?这是一种面向对象/设计模式的方式,我该怎么做?我是否需要重新设计 Element 或让它实现各种接口?

4

1 回答 1

0

通常,您必须构建一个通用接口并将其应用于两个类,因此您将为两者都有一个基本接口,以及通过类使用它所需的方法和属性,ElementList如果需要,则为每个元素提供专用接口,如果不需要,您可以直接在类中实现接口,就像您所做的那样,只抽象公共接口。

于 2012-07-31T00:17:35.230 回答