Как выбрать между классом вспомогательных средств для инъекций и классом stati c? - PullRequest
0 голосов
/ 17 января 2020

Допустим, у моего ViewModel есть свойство IsValidEmail, и я хочу извлечь мои логи проверки электронной почты c в отдельный класс для повторного использования.

Делать ли этот класс проверки электронной почты инъекционным или сделать это как класс c вспомогательный класс?

Хотелось бы услышать плюсы и минусы обоих подходов.

Ответы [ 2 ]

1 голос
/ 17 января 2020

Эмпирическое правило для выбора между stati c и экземпляром:

Если вы на 100% уверены, что не хотите, чтобы ваша функция / свойство велось полиморфно, тогда stati c будет хорошо подходит. Например, функция, которая возвращает значение PI (3.14), может иметь значение stati c, поскольку она будет универсальной константой stati c.

Метод / свойство экземпляра может быть переопределено и может вести себя полиморфно (может изменить поведение во время выполнения). Если вы хотите переопределить поведение, тогда stati c не поможет, потому что метод stati c не может переопределить, так как имя указывает, что это stati c. Пример: скажем, вы хотите создать функцию, которая рассчитывает зарплату сотрудников в организации. Зависит от назначения сотрудника расчет зарплаты будет варьироваться. В этом случае вы не можете использовать функцию stati c, потому что расчет зарплаты зависит от объекта.

В вашем примере проверка электронной почты может быть stati c, поскольку независимо от объекта проверка будет Стати c. Один улов здесь - модульный тест, который вы пишете для родителя, всегда будет вызывать проверку, так как вы не можете смоделировать stati c.

Если вы не уверены, что ваша функция / свойство ведет себя полиморфно, то всегда go для Метод экземпляра / свойство. Только go для статуса c, если вы полностью уверены в этом.

0 голосов
/ 17 января 2020

Сделать ли этот класс проверки электронной почты инъекционным или сделать его вспомогательным классом * stati c?

Это модель представления (ИЛИ), просто класс POCO, затем почему вы не можете просто создать его экземпляр там, где это необходимо (ИЛИ), просто передать экземпляр этого типа в зависимости от того, какой метод проверки вам необходим.

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