lesson 1 #1

Open
alexander wants to merge 2 commits from lesson_1 into master
Owner

1. Применение паттерна Singleton

Задача: применить паттерн «Одиночка» для логирования событий в проекте SBomber (рефакторинг модуля MyTools.cpp).
В единице трансляции MyTools.cpp есть вторая группа функций (помимо функций для работы с экраном) для логирования событий в проекте SBomber. Рассмотрим их прототипы:

void __fastcall OpenLogFile(const std::string& FN);
void CloseLogFile();
void __fastcall WriteToLog(const std::string& str);
void __fastcall WriteToLog(const std::string& str, int n);
void __fastcall WriteToLog(const std::string& str, double d);

Видим функции, которые открывают и закрывают файл для ведения лога, и 3 функции для записи данных в лог-файл.
Необходимо выполнить рефакторинг этих функций и поместить их внутрь «Одиночки» (FileLoggerSingletone) по аналогии с тем, как это было сделано выше для объекта-одиночки ScreenSingletone. Так мы сможем использовать эту функциональность в стиле ООП.

2. (*) Применение паттерна «Заместитель»

Задача: применить Proxy для расчёта среднего времени операций класса FileLoggerSingleton в проекте SBomber.

Используйте Proxy в проекте SBomber, чтобы обернуть операции класса FileLoggerSingleton.
Пусть наша обёртка делает замеры времени до начала каждой операции и после окончания.
В конце выполнения программы средние значения необходимо вывести в консоль.

**1. Применение паттерна Singleton** Задача: применить паттерн «Одиночка» для логирования событий в проекте SBomber (рефакторинг модуля MyTools.cpp). В единице трансляции MyTools.cpp есть вторая группа функций (помимо функций для работы с экраном) для логирования событий в проекте SBomber. Рассмотрим их прототипы: ``` void __fastcall OpenLogFile(const std::string& FN); void CloseLogFile(); void __fastcall WriteToLog(const std::string& str); void __fastcall WriteToLog(const std::string& str, int n); void __fastcall WriteToLog(const std::string& str, double d); ``` Видим функции, которые открывают и закрывают файл для ведения лога, и 3 функции для записи данных в лог-файл. Необходимо выполнить рефакторинг этих функций и поместить их внутрь «Одиночки» (FileLoggerSingletone) по аналогии с тем, как это было сделано выше для объекта-одиночки ScreenSingletone. Так мы сможем использовать эту функциональность в стиле ООП. **2. (*) Применение паттерна «Заместитель»** Задача: применить Proxy для расчёта среднего времени операций класса FileLoggerSingleton в проекте SBomber. Используйте Proxy в проекте SBomber, чтобы обернуть операции класса FileLoggerSingleton. Пусть наша обёртка делает замеры времени до начала каждой операции и после окончания. В конце выполнения программы средние значения необходимо вывести в консоль. ![](https://git.zhirov.website/attachments/1abfb0f2-85e4-4f0a-b81c-87e8e30e0ac9)
alexander added 1 commit 2021-12-20 23:37:14 +00:00
alexander added 1 commit 2021-12-20 23:42:41 +00:00
This pull request can be merged automatically.
You are not authorized to merge this pull request.
You can also view command line instructions.

Step 1:

From your project repository, check out a new branch and test the changes.
git checkout -b lesson_1 master
git pull origin lesson_1

Step 2:

Merge the changes and update on Gitea.
git checkout master
git merge --no-ff lesson_1
git push origin master
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: alexander/geekbrains_gof#1
No description provided.