Когда я должен использовать шаблон Singleton? - PullRequest
0 голосов
/ 18 мая 2018

Насколько я знаю, шаблон синглтон-дизайна следует использовать, когда класс должен иметь не более одного экземпляра.В моем проекте, который представляет собой интернет-магазин, я использую такие объекты, как «Пользователь», «Заказ», «Корзина», и я думаю, что шаблон синглтона подходит для каждого из моих предыдущих объектов.Например, следующий сценарий очень распространен для интернет-магазина.

Один У пользователя один Корзина

Один Корзина делает один Заказ.

Я неправильно истолковал модель Синглтона?

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Да, вы неверно истолковали шаблон.

У вас есть отношения 1: 1 (что кажется правильным), но проектирование, например, пользователя как одиночного, будет означать, что вы можете иметь только один покупатель в вашем магазине.

Шаблон синглтона может иметь смысл для службы аутентификации, поскольку вы, вероятно, хотите, чтобы один один экземпляр отвечал, если у данного пользователя есть действительный сеанс (в отличие от несколькихэкземпляры службы, в которых пользователю может потребоваться войти в каждый из них).

0 голосов
/ 18 мая 2018

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

С точки зрения сервера, существует несколько пользователей, несколько тележек и несколько заказов, поэтому не имеет смысла использовать для этих целей Singleton.классы.

Однако со стороны клиента в любой момент времени будет активен только 1 пользователь и 1 корзина.Синглтон может использоваться здесь, но все еще не соответствует предполагаемому варианту использования Синглтона.

0 голосов
/ 18 мая 2018

Я считаю, что шаблон Singleton используется, когда вы хотите, чтобы объект был одинаковым во всей вашей программе.Например, при электронных покупках синглтоном могут быть каталог и инвентарь.Естественно, у вас будет много пользователей, и хотя у каждого в данный момент может быть одна корзина и один заказ, вы можете хранить предыдущие заказы пользователя, чтобы у пользователей могло быть несколько заказов.В любом случае, если вы сделаете корзину пользователя синглтоном по всей программе, то каждый покупатель увидит ту же корзину.

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