使用复合设计模式时,我该如何处理吸气剂?

时间:2012-07-31 00:06:03

标签: oop design-patterns

对于Javascript,实际的实现可能会过度消除,但我想编写一个新的Element类和一个ElementList类,以便更好地了解Composite设计模式的工作原理。为简单起见,假设我的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课程需要能够使用ElementElementList,对吗?我如何做这是OO /设计模式的方式?我是否需要重新设计Element或让它实现各种接口?

1 个答案:

答案 0 :(得分:0)

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