对于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
课程需要能够使用Element
或ElementList
,对吗?我如何做这是OO /设计模式的方式?我是否需要重新设计Element或让它实现各种接口?
答案 0 :(得分:0)
通常,您必须构建一个公共接口并将其应用于这两个类,因此您将拥有两个基本接口,并通过ElementList
类和专用接口使用所需的方法和属性。每个元素如果需要,如果不需要,你可以直接在类中实现接口,就像你一样,只抽象公共接口。