Как внедрить сервис CRUD в JS (Singleton?) - PullRequest
0 голосов
/ 26 февраля 2020

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

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

Чтобы быть независимым от сервера, экземпляр сервера будет «внедрен». Пользователь может передать имя соответствующего набора данных.

class DataSet {
  constructor(name, server) {
    this.server = server;
    this.name = name;
  }

  async load() {
    this.server.sendLoadCommand(this.name);
  }

  async delete() {
    this.server.sendDeeleteCommand(this.name);
  }

  // ...
}

В большинстве случаев требуется только один метод за один раз. Тогда объект больше не требуется.

new Dataset("foo").delete();

Поскольку теоретически один и тот же объект может использоваться каждый раз, может использоваться глобальный менеджер (singleton).

const window.dataSetManager = {

  async load(name) {
    this.server.sendLoadCommand(this.name);
  }

  async delete(name) {
    this.server.sendDeeleteCommand(this.name);
  }

  // ...
}

window.itemManager.server = server;

Может кто-нибудь сказать мне преимущества одного или обоих способов?

Большое спасибо, Meisenmann

...