# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
|
|||
Рекомендуемая литература: Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 2 час. 24 мин. [Показать отчёт] Научился: Разобрался когда использовать Singleton. Просмотрел литературу. Не использовал некогда этот шаблон. Из литературы "Если вам нужен класс с полной объектно-ориентированной совместимостью, выберите синглтон, а если вам нужно просто хранить кучу статических методов вместе, тогда используйте статические классы." Сложности: Прочесть литературу и понять её. |
|||||
2 | Singleton - Config - Final |
|
|||
Мы начинаем серию коротких уроков по созданию класса считывания данных из конфигурационного файла. Для начала мы организуем несколько конфигурационных параметров в виде констант и расположим их в основном классе Program. Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 10 мин. [Показать отчёт] Научился: Ну по поводу этого мало что могу сказать. |
|||||
3 | Singleton - Config - Git init |
1 тест |
|||
На этом уроке мы про инициализируем git репозиторий для проекта, который мы создали на прошлом уроке. Систему git мы будем использовать для контроля версий наших исходников, коммититить рабочие варианты решения одной и той же задачи, да и просто дополнительная практика использования git в разработке. Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 5 мин. [Показать отчёт] Научился: ☆☆☆☆☆ |
|||||
4 | Singleton - Config - Static |
|
|||
На этом уроке мы продемонстрируем, как обращаться к константам из отдельного класса. Для этого мы создадим новый класс Process(), добавим в него метод demo(), в котором реализуем вывод данных из констант класса Program(). Константы необходимо будет сделать статичными. Так же мы порефакторим имена констант, чтобы они были по стандарту ЗАГЛАВНЫМИ буквами. Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 12 мин. [Показать отчёт] Научился: _______ad88888888888888888888888a, ________a88888"8888888888888888888888, ______,8888"__"P88888888888888888888b, ______d88_________`""P88888888888888888, _____,8888b_______________""88888888888888, _____d8P'''__,aa,______________""888888888b _____888bbdd888888ba,__,I_________"88888888, _____8888888888888888ba8"_________,88888888b ____,888888888888888888b,________,8888888888 ____(88888888888888888888,______,88888888888, ____d888888888888888888888,____,8___"8888888b ____88888888888888888888888__.;8'"""__(888888 ____8888888888888I"8888888P_,8"_,aaa,__888888 ____888888888888I:8888888"_,8"__`b8d'__(88888 ____(8888888888I'888888P'_,8)__________88888 _____88888888I"__8888P'__,8")__________88888 _____8888888I'___888"___,8"_(._.)_______88888 _____(8888I"_____"88,__,8"_____________,8888P ______888I'_______"P8_,8"_____________,88888) _____(88I'__________",8"__M""""""M___,888888' ____,8I"____________,8(____"aaaa"___,8888888 ___,8I'____________,888a___________,8888888) __,8I'____________,888888,_______,888888888 _,8I'____________,8888888'`-===-'888888888' ,8I'____________,8888888"________88888888" 8I'____________,8"____88_________"888888P 8I____________,8'_____88__________`P888" 8I___________,8I______88____________"8ba,. (8,_________,8P'______88______________88""8bma,. _8I________,8P'_______88,______________"8b___""P8ma, _(8,______,8d"________`88,_______________"8b_____`"8a __8I_____,8dP_________,8X8,________________"8b.____:8b __(8____,8dP'__,I____,8XXX8,________________`88,____8) ___8,___8dP'__,I____,8XxxxX8,_____I,_________8X8,__,8 ___8I___8P'__,I____,8XxxxxxX8,_____I,________`8X88,I8 ___I8,__"___,I____,8XxxxxxxxX8b,____I,________8XXX88I, ___`8I______I'__,8XxxxxxxxxxxxXX8____I________8XXxxXX8, ____8I_____(8__,8XxxxxxxxxxxxxxxX8___I________8XxxxxxXX8, ___,8I_____I[_,8XxxxxxxxxxxxxxxxxX8__8________8XxxxxxxxX8, ___d8I,____I[_8XxxxxxxxxxxxxxxxxxX8b_8_______(8XxxxxxxxxX8, ___888I____`8,8XxxxxxxxxxxxxxxxxxxX8_8,_____,8XxxxxxxxxxxX8 ___8888,____"88XxxxxxxxxxxxxxxxxxxX8)8I____.8XxxxxxxxxxxxX8 __,8888I_____88XxxxxxxxxxxxxxxxxxxX8_`8,__,8XxxxxxxxxxxxX8" __d88888_____`8XXxxxxxxxxxxxxxxxxX8'__`8,,8XxxxxxxxxxxxX8" __888888I_____`8XXxxxxxxxxxxxxxxX8'____"88XxxxxxxxxxxxX8" __88888888bbaaaa88XXxxxxxxxxxxXX8)______)8XXxxxxxxxxXX8" __8888888I,_``""""""8888888888888888aaaaa8888XxxxxXX8" __(8888888I,______________________.__```"""""88888P" ___88888888I,___________________,8I___8,_______I8" ____"""88888I,________________,8I'____"I8,____;8" ___________`8I,_____________,8I'_______`I8,___8) ____________`8I,___________,8I'__________I8__:8' _____________`8I,_________,8I'___________I8__:8 ______________`8I_______,8I'_____________`8__(8 _______________8I_____,8I'________________8__(8; _______________8I____,8"__________________I___88, ______________.8I___,8'_______________________8"8, ______________(PI___'8_______________________,8,`8, _____________.88'____________,@@___________.a8X8,`8, _____________(88_____________@@@_________,a8XX888,`8, ____________(888_____________@@'_______,d8XX8"__"b_`8, ___________.8888,_____________________a8XXX8"____"a_`8, __________.888X88___________________,d8XX8I"______9,_`8, _________.88:8XX8,_________________a8XxX8I'_______`8__`8, ________.88'_8XxX8a_____________,ad8XxX8I'________,8___`8, ________d8'__8XxxxX8ba,______,ad8XxxX8I"__________8__,__`8, _______(8I___8XxxxxxX888888888XxxxX8I"____________8__II__`8 _______8I'___"8XxxxxxxxxxxxxxxxxxX8I'____________(8__8)___8; ______(8I_____8XxxxxxxxxxxxxxxxxX8"______________(8__8)___8I ______8P'_____(8XxxxxxxxxxxxxxX8I'________________8,_(8___:8 _____(8'_______8XxxxxxxxxxxxxxX8'_________________`8,_8____8 _____8I________`8XxxxxxxxxxxxX8'___________________`8,8___;8 _____8'_________`8XxxxxxxxxxX8'_____________________`8I__,8' _____8___________`8XxxxxxxxX8'_______________________8'_,8' _____8____________`8XxxxxxX8'________________________8_,8' _____8_____________`8XxxxX8'________________________d'_8' _____8______________`8XxxX8_________________________8_8' _____8________________"8X8'_________________________"8" _____8,________________`88___________________________8 _____8I________________,8'__________________________d) _____`8,_______________d8__________________________,8 ______(b_______________8'_________________________,8' _______8,_____________dP_________________________,8' _______(b_____________8'________________________,8' ________8,___________d8________________________,8' ________(b___________8'_______________________,8' _________8,_________a8_______________________,8' _________(b_________8'______________________,8' __________8,_______,8______________________,8' __________(b_______8'_____________________,8' ___________8,_____,8_____________________,8' ___________(b_____8'____________________,8' ____________8,___d8____________________,8' ____________(b__,8'___________________,8' _____________8,,I8___________________,8' _____________I8I8'__________________,8' _____________`I8I__________________,8' ______________I8'_________________,8' ______________"8_________________,8' ______________(8________________,8' ______________8I_______________,8' ______________(b,___8,________,8) ______________`8I___"88______,8i8, _______________(b,__________,8"8") _______________`8I__,8______8)_8_8 ________________8I__8I______"__8_8 ________________(b__8I_________8_8 ________________`8__(8,________b_8, _________________8___8)________"b"8, _________________8___8(_________"b"8 _________________8___"I__________"b8, _________________8________________`8) _________________8_________________I8 _________________8_________________(8 _________________8,_________________8, _________________Ib_________________8) _________________(8_________________I8 __________________8_________________I8 __________________8_________________I8 __________________8,________________I8 __________________Ib________________8I __________________(8_______________(8' ___________________8_______________I8 ___________________8,______________8I ___________________Ib_____________(8' ___________________(8_____________I8 ___________________`8_____________8I ____________________8____________(8' ____________________8,___________I8 ____________________Ib___________8I ____________________(8___________8' _____________________8,_________(8 _____________________Ib_________I8 _____________________(8_________8I ______________________8,________8' ______________________(b_______(8 _______________________8,______I8 _______________________I8______I8 _______________________(8______I8 ________________________8______I8, ________________________8______8_8, ________________________8,_____8_8' _______________________,I8_____"8" ______________________,8"8,_____8, _____________________,8'_`8_____`b ____________________,8'___8______8, ___________________,8'____(a_____`b __________________,8'_____`8______8, __________________I8/______8______`b, __________________I8-/_____8_______`8, __________________(8/-/____8________`8, ___________________8I/-/__,8_________`8 ___________________`8I/--,I8________-8) ____________________`8I,,d8I_______-8) ______________________"bdI"8,_____-I8 ___________________________`8,___-I8' ____________________________`8,,--I8 _____________________________`Ib,,I8 ______________________________`I8I |
|||||
5 | Singleton - Config - Git add |
|
|||
На этом уроке мы зафиксируем очередные изменения нашей программы с помощью команды commit в git репозитории. Для начала мы посмотрим, что изменилось с последнего коммита. Добавим изменённый и новый файлы на сцену и закоммитим их в историю репозитория для фиксации очередной рабочей версии нашей программы. Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 3 мин. [Показать отчёт] Научился: git add, git log, git status - вспомнил |
|||||
6 | Singleton - Config - Class |
|
|||
На этом уроке мы выделим всё, что касается конфигурации в отдельный класс. Для этого мы создадим новый класс Config() и перенесём туда наши константы. Так же нам нужно будет исправить появившиеся ошибки, указав новое расположение констант. Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 5 мин. [Показать отчёт] Научился: ░░░░░░░░░░░░▄▄ ░░░░░░░░░░░█░░█ ░░░░░░░░░░░█░░█ ░░░░░░░░░░█░░░█ ░░░░░░░░░█░░░░█ ███████▄▄█░░░░░██████▄ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█████░░░░░░░░░█ ██████▀░░░░▀▀██████▀ |
|||||
7 | Singleton - Config - Git commit |
1 тест |
|||
На этом уроке мы заново попрактикуемся в работе с git. Вначале мы попробуем закоммитить изменения, но увидим, что новый файл не попал в коммит. Так как он не отслеживался системой git, его необходимо вначале добавить на сцену и только потом закоммитить. В дальнейшем система git будет отслеживать изменения данного файла автоматически. Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 2 мин. [Показать отчёт] Научился: ░░░░░░░░░░░░▄▄ ░░░░░░░░░░░█░░█ ░░░░░░░░░░░█░░█ ░░░░░░░░░░█░░░█ ░░░░░░░░░█░░░░█ ███████▄▄█░░░░░██████▄ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█░░░░░░░░░░░░░░█ ▓▓▓▓▓▓█████░░░░░░░░░█ ██████▀░░░░▀▀██████▀ |
|||||
8 | Singleton - Config - FileReader |
1 тест |
|||
На этом уроке мы с вами доработаем класс Config(), чтобы параметры хранились и загружались из файла. Для этого создадим файл конфигурации, перенесём в него настройки программы и в классе Config() добавим метод считывания из нашего конфигурационного файла. Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 37 мин. [Показать отчёт] Научился: Статик плохо потому что занимает память. Finally{ } - сделал но надо опять добавлять try catch, получается ошибка на ошибке. |
|||||
9 | Singleton - Config - Git default |
1 тест |
|||
На этом уроке мы закоммитим все наши изменения. Для начала мы создадим копию конфигурационного файла с именем config.default.txt. Это необходимо делать, чтобы небыло конфликтов из-за того, что у каждого разработчика будет своя версия config.txt для корректной работы приложения. Так же изменим значения файла config.default.txt на значения для примера, чтобы каждый смог изменить их под себя. Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 6 мин. [Показать отчёт] Научился: Использую гит:) |
|||||
10 | Singleton - Config - Static field |
|
|||
На этом уроке мы поэкспериментируем с оптимизацией загрузки конфигурационного файла. Остановимся на варианте глобальной версии с передачей в другие классы в качестве параметра. Так же закоммитим наши изменения в git репозиторий. Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 11 мин. [Показать отчёт] Научился: Все работает. Смотрим дальше... |
|||||
11 | Singleton - Config - Static class |
|
|||
На этом уроке мы продолжим оптимизации, сделав всё в классе Config() статичным. Так же оптимизируем классы Program() и Process() для использования статичной версии класса Config(). После чего добавим загрузку конфига в классе Program(). Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 7 мин. [Показать отчёт] Научился: Сделал все статичным в классе конфиг. Это неудобно потому что, теряем некоторые возможности ООП. |
|||||
12 | Singleton - Config - Using pattern |
1 тест |
|||
Мы рассмотрели множество рабочих вариантов реализации, но на деле их эффективность зависела от конкретной реализации и при определённых условиях требовалась доработка. На этом уроке мы наконец реализуем шаблон проектирования: Синглтон (Singleton). Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 9 мин. [Показать отчёт] Научился: Cоздал метод getInstance и модифицировал программу. |
|||||
13 | Singleton - Config - Cant extend |
1 тест |
|||
На этом уроке мы вынесем из класса Config() код синглтона в класс Singleton() и попробуем унаследовать его. Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 8 мин. [Показать отчёт] Научился: Данные способ не удался потому что в Синглетоне используем статик. |
|||||
14 | Singleton - Config - Super child |
|
|||
На этом уроке мы всё же разделим класс Config() на две логические части. Для этого мы выделим логику Синглона в отдельный класс ConfigSingleton(). Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 12 мин. [Показать отчёт] Научился: Модифицировал. Сделал отдельный класс Синглтон. |
|||||
15 | Singleton - Timer - Pattern Design |
1 тест |
|||
На этом уроке мы начинаем создание класса Секундомер() для засекания времени работы различных участков программы. Для разработки этого класса мы воспользуемся шаблоном проектирования Синглтон. Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 9 мин. [Показать отчёт] Научился: Создал шаблон Singletone для таймера. добавил в гит . |
|||||
16 | Singleton - Timer - Start / Click |
1 тест |
|||
На этом уроке мы продолжим создание класса Timer() при помощи шаблона синглтон. Для начала мы добавим метод start() в класс Timer() для запуска секундомера. Так же мы добавим метод click(), чтобы увидеть сколько времени прошло. Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 6 мин. [Показать отчёт] Научился: Добавил в методы start(), click() отсчёт времени . |
|||||
17 | Singleton - Timer - Program |
|
|||
На этом уроке мы наконец добавим основной класс для нашей программы: Program() и добавим в метод Program.main() необходимый код для демонстрации работы синглтона Timer(). Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 11 мин. [Показать отчёт] Научился: Все получилось - все работает. Создал Програм/ посчитал время. |
|||||
18 | Singleton - Timer - String vs Buffer Speed |
1 тест |
|||
На этом уроке мы сравним скорость работы между String и StringBuffer. Для этого мы создадим новый класс StringSpeed() с методами runString() и runStringBuffer(). Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 19 мин. [Показать отчёт] Научился: StringBuffer намного быстрее работает... |
|||||
19 | Singleton - Timer - Experiment |
|
|||
На этом уроке мы изучим класс Timer() и выделим часть кода для нового синглтона. Для этого нам понадобиться новый класс Log() который будет реализован как синглтон и заниматься логированием в консоль. Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 11 мин. [Показать отчёт] Научился: Создал Лог класс. Он работает. |
|||||
20 | Singleton - Timer - Log class |
1 тест |
|||
На этом уроке мы разделим наш синглтон Timer() на две части: Timer() и SingleTimer(). Тот же эксперимент проведём и с классом Log(). После чего будет ясно, что лучше так не делать и вернём код в состояние на момента начала урока. Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 44 мин. [Показать отчёт] Научился: Singletone лучше использовать в основном классе и не создавать новый - потому что код повторяться. |
|||||
21 | ФИНАЛЬНЫЙ УРОК |
без видео 7 тестов |
|||
Поздpaвляю! Твoя зaдaча - прoверить cебя и пpойти тест, см. вкладку "Тест". Напиши отзыв или видеообзор по этому видеокурсу. Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 3 мин. [Показать отчёт] Научился: Хороший видео курс по Singletone. Спасибо! |
|||||
22 | VIP - Singleton - Timer - Enum |
1 тест |
|||
На этом уроке мы реализуем синглтон с использованием перечислений. Для этого мы переделаем Log() из класса (class) в перечисление (enum). Тоже самое мы проделаем и с классом Timer() Отчёт отправил: 16089. Povilas Abramovicius Выполнено за 47 мин. [Показать отчёт] Научился: Доне |
|||||
Итого: 22 видеоурока |
2 час. 24 мин. 18 тестов |
13 чел. | |||
Финалисты: Иван Воронин, Сергей Соколов, Станислав, Povilas Abramovicius, Sergej Šugajev, Александр, Новопашин Владимир, Tekashnik, Andrei, Dmitry Sinitsin, Yefim, Anatoli, Tom . |