На самом деле произойдёт следующее:
1. Будет создан экземпляр EmailValidator на основе строки.
2. Будет вызван метод isValid() для этого экземпляра.
3. Результат, возвращённый методом, запишется в переменную.
4. Garbage Collector убьёт экземпляр.
Вобщем, задача будет решена. Принципы ООП не пострадают.
Но будет выполнено два совершенно лишних действия: создание и удаление объекта.
Несколько быстрее будет работать такой вариант:

Код:
isValid = EmailValidator.validate(tfEmail.text);
Т.е. если используется статический метод класса.
Правда, тоже есть подводный камень.
Обычно класс находится в каком-то пекедже. И хоть и пишем просто EmailValidator, компилятор всё равно расширяет его до полного имени.
Например, com.strings.validators.EmailValidator
Прежде, чем будет вызван метод этого класса, произойдёт следующее (синтаксис flasm'а):

Код:
push 'com'
getVariable
push 'strings'
getMember
push 'validators'
getMember
push 'EmailValidator'
getMember
Вобщем, довольно много не самых быстрых инструкций.
Зачастую это, конечно, малозаметно. Но всё равно иногда терзает душу.