Шаблон проектирования, который извлекает данные вместо нажатия? - PullRequest
1 голос
/ 07 марта 2020

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

Скажем, у меня есть головоломка судоку, и когда я ввожу число, я хочу подтвердить, что никакое другое поле в той же строке, столбце или квадрате не имеет тот же номер.

Есть ли шаблон, в котором я могу настроить список наблюдаемых полей и получить их текущее значение?

1 Ответ

1 голос
/ 07 марта 2020

Да, у вас есть как минимум две опции:

1- Шаблон посетителя Этот шаблон полезен, если вы хотите выполнять операции над объектом без его изменения. Вы можете определить объект для каждой ячейки в судоку и разрешить его посещение предопределенному посетителю. Для этого вы можете, например, рекурсивно найти следующий объект в предварительно определенном списке (карте) объектов и затем выполнить нужную операцию. Хорошим вариантом является применение его в сочетании с Pattern итератора .

2- Цепочка ответственности Этот шаблон полезен, если вы хотите, чтобы каждая ячейка выполняла операцию и имела контроль над алгоритмом. Вы должны создать цепочечную структуру, и после того, как текущая ячейка выполнит операцию «сравнить значения», рекурсивно вызывается цепочка, выполняющая эту проверку.

Как я уже сказал, оба полезны, если вы хотите «инвертировать» Observer. поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...