Показать сообщение отдельно
Старый 18.07.2007, 11:19
WindWalker вне форума Посмотреть профиль Отправить личное сообщение для WindWalker Найти все сообщения от WindWalker
  № 44  
Ответить с цитированием
WindWalker

Регистрация: Nov 2006
Сообщений: 223
На самом деле произойдёт следующее:
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
Вобщем, довольно много не самых быстрых инструкций.
Зачастую это, конечно, малозаметно. Но всё равно иногда терзает душу.