将简单的实用程序对象合并到更复杂的专用对象中的最佳方法是什么?

时间:2010-02-16 00:14:13

标签: javascript oop

我正在javascript中开发一些基本的实用程序对象。这些是:

spinner {
// generates a spinner
}

dialog {
// generates a dialog
}

wysiwyg {
// generates a wysiwyg editable
}

etc.

一旦我积累了一组基本实用程序对象,我想创建更具体,复杂的对象来处理不同的数据集。例如,一个用于编辑记录列表的对象。

我想知道:将我的实用程序对象的功能合并到我更复杂的专用对象中的最佳方法是什么?

多重继承?例如,从父对话框和微调器创建的对象editList,然后进行扩充?或者,在更复杂的对象中生成实用程序对象的新实例是更好的设计实践吗?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

多重继承几乎不是正确的答案。你想要用的是构图。例如,如果你有一个复杂的UI面板,可以有几个不同的对话框和一个wysiwig,你可以做类似的事情

function myPanel(width, height) {
  this.saveDialog = new dialog('Save', ...);
  this.loadDialog = new dialog('Load', ...);
  this.editPanel = new wysywig(width, height);

  . . .
  var me = this;
  // Add a Save button to trigger the save dialog;
  this.saveButton = new button("Save", function() { me.saveDialog.display(); });
  this.addButton(saveButton);
}

由于你的更复杂的对象实际上可能不是一个微调器或一个对话框,而是一个以某种方式使用它们的组件,因此这里的组合是合适的范例。