powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Какой паттерн?
25 сообщений из 61, страница 1 из 3
Какой паттерн?
    #40050945
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

В систему будут поступать объекты "Документ", нужно проводить валидацию документов, согласно списку проверок из БД.

Проверки в БД могу быть включены (true) или отключены (false). Т.е. если сегодня включены проверки 1, 2, 3, и 5, то на завтра,

пользователь может изменить количество и номера проверок на 1, 3, 4.

Какой паттерн проектирования здесь можно применить? Что бы не писать конструкцию:

Код: java
1.
2.
3.
4.
5.
6.
7.
if(check1 == true){

} else if(check2 == true){

} else if (check3 == true){

...
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050950
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
Почему у многих такая маниакальная не любовь к if, case, for?))
В каком виде проверка лежит в бд?
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050952
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
Aleks_Aleks,
Почему у многих такая маниакальная не любовь к if, case, for?))

Мы не индусы, что бы нам платили за количество строк кода))

PetroNotC Sharp
Aleks_Aleks,
В каком виде проверка лежит в бд?

Скорее всего, буду из БД получать список "SELECT check FROM checks WHERE status = true;"

конвертить его в List<Check>

а дальше как-то проверять, что если в списке есть проверка 1 то выполнить проверку "№ документа", если есть проверка 2 то проверить "Дату документа" и т.д.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050958
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я думаю использовать паттерн Command,

код уже реализован на паттерне Chain of Responsibility

просто классы, положить в БД, получить список классов, на всех классах вызвать метод execute

годный контент?
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050959
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
Будет меньше кода если все условия выстроим в цепочку?
strim2 = streamMy.filter(check==true)
2. Я спросил какой вид в бд имеет проверка "Дата документа"?
Что лежит в текстовом поле? Sql.? Dll? Скрипт? Jar?
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050961
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks
Я думаю использовать паттерн Command,

код уже реализован на паттерне Chain of Responsibility

просто классы, положить в БД, получить список классов, на всех классах вызвать метод execute

годный контент?
нет. Command это - выполни команду кто сможет.
То есть есть много исполнителей а не проверок.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050962
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
Почему нет паттерн ORM?
Если бы он был, то ни одного слова о бд не было бы в топике.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050963
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
Aleks_Aleks,
2. Я спросил какой вид в бд имеет проверка "Дата документа"?
Что лежит в текстовом поле? Sql.? Dll? Скрипт? Jar?


Пока точно не известно, данная таблица еще не реализована, скорее всего там будет храниться код проверки "CHECK_01_02_02"

но можно положить и имя класса или еще что нить...
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050964
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
Ну и на всякий теория.
Валидация проходе в слое бизнес логике БЛ.
Она пишется заранее и юзверь не ставит галочки что проверять.
В общем случае... Абстрактно говоря.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050965
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleks_Aleks
PetroNotC Sharp
Aleks_Aleks,
2. Я спросил какой вид в бд имеет проверка "Дата документа"?
Что лежит в текстовом поле? Sql.? Dll? Скрипт? Jar?


Пока точно не известно, данная таблица еще не реализована, скорее всего там будет храниться код проверки "CHECK_01_02_02"

но можно положить и имя класса или еще что нить...


В БД будет храниться только код и название проверки и еще статус вкл/выкл,

сама реализация проверки будет в Java Class
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050966
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
А условия OR AND, скобки, меньше больше где?
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050967
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
т.е. общий смысл такой,

есть
Код: java
1.
2.
3.
4.
5.
6.
List<Check> listChecks = new ArrayList<>();

listChecks.add(new CheckNumber);
listChecks.add(new CheckDate);
listChecks.add(new ChecUser);
listChecks.add(new CheckOffice);



есть проверки

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
class CheckNumber{

 void exsample(String id){
 if(id != "123"){
  ...
 }
}


class CheckDate{

 void exsample(String date){
 if(date >= currentDate){
  ...
 }
}
}
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050968
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
If doc.подписан == гендир ИЛИ врио
выделитКредит()

Как тут галочками?
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050970
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks
т.е. общий смысл такой,

есть
Код: java
1.
2.
3.
4.
5.
6.
List<Check> listChecks = new ArrayList<>();

listChecks.add(new CheckNumber);
listChecks.add(new CheckDate);
listChecks.add(new ChecUser);
listChecks.add(new CheckOffice);




есть проверки

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
class CheckNumber{

 void exsample(String id){
 if(id != "123"){
  ...
 }
}


class CheckDate{

 void exsample(String date){
 if(date >= currentDate){
  ...
 }
}
}

а где тут юзверь с галочками? Он кто?
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050972
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
Извини, пока что ООП головного мозга.
Тебе на галеры надо.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050973
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если этих чекеров ощутимо больше 5, я бы добавил в таблице уникальное поле "имя чекера", а в коде по полю создавал соответствующую имени реализацию. Т.е. грузим только те, что активны, создаем реализации и возвращаем прикладному коду. Самый интересный вопрос - как именно и где создавать и описывать реализации, тут возможны варианты. Самое примитивное - мапа имя-класс, более продвинутое - как-то через DI, если используется.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050975
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,
Имя Класса. Потом фабрикой создавать полиморфные объект. И он инспектирует или валидирует.
Тут много паттернов.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050978
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше сразу DSL
))))
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050979
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050980
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,

Предметно-ориентированный язык (англ. domain-specific language, DSL — «язык, специфический для предметной области») — компьютерный язык, специализированный для конкретной области применения (в противоположность языку общего назначения, применимому к широкому спектру областей и не учитывающему особенности конкретных сфер знаний). Построение такого языка и/или его структура данных отражают специфи
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050981
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Имя Класса

имя класса менее гибко, а так это "имя бина", за которым реализация может меняться
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050983
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
If name == "CheckDate"
obj = new CheckDate()
else
...
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050984
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050987
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,
Бин это класс в общем случае.
Я о паттерне полиморфизм в ООП.
Его препод раньше спросит.
...
Рейтинг: 0 / 0
Какой паттерн?
    #40050989
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
Без if это фабрика классов рожает класс по строке
...
Рейтинг: 0 / 0
25 сообщений из 61, страница 1 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Какой паттерн?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]