2012-07-31 59 views
0

JavaScript的实际实现可能会超过kill,但我想编写一个新的Element类和一个ElementList类,以更好地了解复合设计模式的工作原理。为简单起见假设我有在我的Element级以下:使用复合设计模式时,如何处理getters?

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没有接口,但对于练习,让我们假设它。 ElementList课程将需要能够与Element s或ElementList s一起使用,对吗?我如何做到这一点是面向对象/设计模式的方式?我需要重新设计Element还是让它实现各种接口?

回答

0

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