Вы должны рассмотреть возможность использования :blank
.
:empty
- выбрать пустые элементы. :blank
- активная форма :empty
, позволяет выбрать ровный пробел. Я нашел статью , которая может помочь вам понять больше о них.
Примечание: Хотя :blank
более мощный, он поддерживается не всеми браузерами.
Мое эмпирическое правило состоит в том, чтобы определить интерфейс, если я ожидаю иметь несколько реализаций, или фактические конкретные классы приложений или единственное внедрение приложения и поддельная реализация для поблочного тестирования. Если я только ожидаю единственную реализацию, и классу не нужно фальсифицирование (большинство не делает), то я пойду виртуальным путем метода и осуществлю рефакторинг к интерфейсу по мере необходимости.
Если бы я должен выбрать между этими двумя, я пошел бы с интерфейсной вещью. Интерфейс предназначен для определения контракта, который является в основном, чего фиктивный объект собирается придерживаться. Отмечание метода как виртуальный могло бы иметь непредвиденные побочные эффекты. Это влияет на дизайн фактического класса, который дразнят. Интерфейс просто определяет имена методов и не будет иметь никакого эффекта на реальный класс.
Кто говорит, что фиктивный объект необходимо произойти из той же иерархии классов?
Намного легче создать простой автономный класс, который имеет необходимый интерфейс, и создайте экземпляры того объекта.
Можно даже создать иерархию ложных классов и использования это ради поблочного тестирования.
Лучшая вещь состоит в том, чтобы использовать Вашу голову. Думайте о своем сценарии, если имеет больше смысла использовать виртуальный, затем делают это. Если однако интерфейс лучше подходит для Вашей задачи, затем делают это.
Таким образом, действительно я рассматриваю его как это в добавлении новой функциональности
Я уверен, что существует набор протестов к этому. Поэтому просто используйте голову и сделайте то, что является самым легким в Вашем сценарии.