Насмешка объектов - объявляет все методы как виртуальные или использует интерфейс?

Вы должны рассмотреть возможность использования :blank.

  • :empty - выбрать пустые элементы.
  • :blank - активная форма :empty, позволяет выбрать ровный пробел.

Я нашел статью , которая может помочь вам понять больше о них.

Примечание: Хотя :blank более мощный, он поддерживается не всеми браузерами.

12
задан dnewcome 27 March 2009 в 22:47
поделиться

4 ответа

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

10
ответ дан 2 December 2019 в 18:22
поделиться

Если бы я должен выбрать между этими двумя, я пошел бы с интерфейсной вещью. Интерфейс предназначен для определения контракта, который является в основном, чего фиктивный объект собирается придерживаться. Отмечание метода как виртуальный могло бы иметь непредвиденные побочные эффекты. Это влияет на дизайн фактического класса, который дразнят. Интерфейс просто определяет имена методов и не будет иметь никакого эффекта на реальный класс.

11
ответ дан 2 December 2019 в 18:22
поделиться

Кто говорит, что фиктивный объект необходимо произойти из той же иерархии классов?

Намного легче создать простой автономный класс, который имеет необходимый интерфейс, и создайте экземпляры того объекта.

Можно даже создать иерархию ложных классов и использования это ради поблочного тестирования.

0
ответ дан 2 December 2019 в 18:22
поделиться

Лучшая вещь состоит в том, чтобы использовать Вашу голову. Думайте о своем сценарии, если имеет больше смысла использовать виртуальный, затем делают это. Если однако интерфейс лучше подходит для Вашей задачи, затем делают это.

Таким образом, действительно я рассматриваю его как это в добавлении новой функциональности

  • Inheritence: Используйте виртуальные методы.
  • Состав: Используйте интерфейсы.

Я уверен, что существует набор протестов к этому. Поэтому просто используйте голову и сделайте то, что является самым легким в Вашем сценарии.

-1
ответ дан 2 December 2019 в 18:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: