Каков наилучший способ включения простых полезных объектов в более сложные специализированные объекты? - PullRequest
1 голос
/ 16 февраля 2010

Я занимаюсь разработкой некоторых базовых служебных объектов в javascript. Это такие вещи, как:

spinner {
// generates a spinner
}

dialog {
// generates a dialog
}

wysiwyg {
// generates a wysiwyg editable
}

etc.

Как только я соберу коллекцию базовых служебных объектов, я бы хотел создать более конкретные, сложные объекты для работы с различными наборами данных. Например, объект для редактирования списка записей.

Мне интересно: как лучше всего включить функциональность моих служебных объектов в мои более сложные, специализированные объекты?

Множественное наследование? Например, объект editList, который создается из родительского диалога и счетчика, а затем дополнен? Или лучше проектировать практику создания новых экземпляров моих служебных объектов внутри моих более сложных объектов?

Заранее спасибо за помощь.

1 Ответ

3 голосов
/ 16 февраля 2010

Множественное наследование почти никогда не является правильным ответом.То, что вы хотите использовать, это композиция.Например, если у вас есть сложная панель пользовательского интерфейса, которая может иметь несколько различных диалогов и 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);
}

, так как ваш более сложный объект, вероятно, на самом деле не является вращателемдиалог, а скорее компонент, который использует их все в некотором роде, композиция является подходящей парадигмой здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...