Паттерны проектирования

Здравствуйте. Помогите пожалуйста разобраться. Есть вот такое задание:

Реализуйте с использованием паттернов проектирования простейшую систему планирования задач. Должна быть возможность создания списка дел, установки приоритетов, установки
дат выполнения, удаление и изменения дел.
Каждому делу можно установить тег. Список дел можно загружать и сохранять в файл. Необходимо реализовать возможность
поиска конкретного дела. Критерии поиска: по датам, по тегам, по
приоритету и так далее.

Не знаю с чего начать и какие паттерны тут можно использовать? Направьте пожалуйста меня на путь истинный

Можно просто сделать как-нибудь и посмотреть не получились ли где-то какие-то паттерны :kolobokbatya: Многие паттерны это ж не какие-то откровения сверхмозгов, а просто названия для часто используемых штук.

https://ru.wikipedia.org/wiki/Шаблон_проектирования#Типы_шаблонов_проектирования

Из этого списка RAII например это вообще просто стандартный способ использования конструктора+деструктора в С++ когда есть какой-то ресурс требующий уничтожения/закрытия/… (файл, …).

Стратегию, обсервера, фабрики тоже часто используют не зная/не думаю об этих названиях.

Это, кстати, наверно и может быть стратегией и/или фабрикой:

Подскажите пожалуйста. У меня есть абстрактная фабрика, которая штампует задачи.
ConcreteTask* createTask()const override { return new ConcreteTask(); }
Я сделал класс Планировщик с полем list<ConcreteTask*>tasks;
Можно ли каким-то образом организовать так, чтобы созданная задача добавлялась в список ? Как-то типа

tasks.push_back(TaskCreator::createTask()) ?

Так а что не так с этим?

taskFactory = new TaskFactory();

...

tasks.push_back(factory->createTask());

Лучше vector наверно, в С++ list это связный список.


Чтобы не париться с delete всего, советую использовать умные указатели (shared_ptr, unique_ptr).

1 Симпатия

…и тут наверно надо <Task*> (абстрактный класс), иначе смысл в фабрике.

1 Симпатия