2016-06-24 3 views
0

Я хочу иметь механизм проверки метода. Я ищу:Проверка параметров ввода java

public void someMethod(@valid String emailAddress, @valid Integer ID) { 
} 

Это класс общего назначения, не обязательно java bean. Причина, по которой я хочу этого, заключается в том, что я хочу отделить логику проверки от этого конкретного класса.

Также я хочу использовать принцип DRY, который означает, что различные методы будут использовать аналогичные параметры, поэтому я не хочу дублировать усилия и не хочу вводить несоответствия, обрабатывающие аналогичные типы входов.

Кроме того, я хочу сделать свой код более читаемым, так как в противном случае тело моего метода будет посыпано логикой проверки/then/else, которая затруднит понимание реальной логики и приведет к ненужному отвлечению внимания.

Если мой код был аннотирован некоторой логикой, тогда кто-то, например, весна, должен назвать это - эта часть, я думаю, я понимаю. Поэтому я не уверен, как это реализовать. Будет ли работать аспектно-ориентированное программирование?

+0

Возможно, вам захочется узнать, что может сделать для вас «Hibernate Validator». – Tom

+0

Вы можете создать прокси-сервер вокруг вашего класса, который обрабатывает проверку для каждого параметра. В вашей аннотации может быть элемент 'Class > value() ', который укажет на класс проверки для этого параметра, который будет создан и протестирован вашим прокси-сервером. – shmosel

+0

Я думаю, что это именно то, что может сделать АОП – ZhaoGang

ответ

2

Если emailAddress и ID используются в нескольких методах, я бы создал класс для каждого из них с логикой проверки в соответствующих конструкторах. Таким образом, вы можете гарантировать, что каждый экземпляр этих классов действителен. Тогда ваша подпись подписи выше
public void someMethod(EmailAddress emailAddress, ID id) {}.

В основном, корень вашей проблемы - это строки и примитивы с различным смысловым смыслом. Простейшим решением является использование пользовательских, значимых классов, а не строк и примитивов.

Смежные вопросы