ООП з точки зору корпоративної розробки на Java
HTML-код
- Опубликовано: 3 июн 2024
- 👉 Приєднуйся до Bobocode Community: www.bobocode.com/
____________________________________________
𝙋𝙖𝙩𝙧𝙚𝙤𝙣: / bobocode
𝙂𝙞𝙩𝙃𝙪𝙗: github.com/bobocode-projects
Telegram-канал: t.me/bobocode
Linkedin: bit.ly/2RWPQF5
Twitter: bit.ly/3vaQiOl
Тарас в LinkedIn: bit.ly/2ElWg8J
Тарас в Twitter: bit.ly/33Pmuwg
____________________________________________
6-те заняття тренувальної програми Ultimate Enterprise Java (2021).
УВАГА! Відеозапис не містить активної частини заняття.
00:00 - Початок
00:15 - План заняття
01:28 - Як економити час, говорячи правду?
03:38 - ОБʼЄКТНО-ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ
04:30 - Для чого потрібен дизайн (ООП)?
07:20 - Приклад поганого дизайн
09:14 - Приклад хорошого дизайну
10:57 - Інверсія залежностей - принцип хорошого дизайну
13:10 - Інкапсуляція. Наслідування. Поліморфізм
13:21 - Для чого потрібна абстракція?
14:59 - Інкапсуляція, яка допомагає
16:54 - Підсумки основних принципів ООП
17:23 - ДИЗАЙН ПАТЕРНИ
19:56 - Чому потрібні патерни?
21:11 - Тривіальні патерни
23:56 - Патерн проксі (Proxy)
25:30 - Реалізація патерна проксі (Приклад коду)
32:24 - Рефлексія VS. CGlib
33:24 - Як створити проксі за доп. CGLib? (Приклад коду)
#opensource #java #education
👉 Навчання від Bobocode: bit.ly/3IRrJhj
Важкувато заходить. Ще вчитися та вчитися. до цих курсів.
Хіба хтось казав, що буде легко? ;)
було б цікаво дізнатися різницю між проксі та декоратором з твоєї точки зору :)
мистецтво пояснити це дар!
база.
Дякую!
Дивлюсь і чим далі тим більше тягне до цієї " магії " і порівняно з неї звичайна розробка стає сірою і менш цікавою а побудова інструментів чимсь неймовірним. І якось самому хочеться написати щось що буде мати широке використання і стане чудовим інструментом
Так, це дуже цікаво. Ми на програмі Java Ultimate пишемо свій Dependency Injection контейнер Bring (аналог Spring), а також свій ORM фреймворк Bibernate (аналог Hibernate) і це, зазвичай, учасникам дуже заходить.
@@Bobocode а неповнолітніх на курс ви приймаєте?
@@Beetle_in_the_Anthill програма для досвідчених Java-розробників, тому навряд. Маю на увазі, що не можна бути неповнолітнім і прицьому бути досвідченим інженером. Хоча, напевно, можуть бути і вийнятки. 🙂
@@Bobocode просто дуже важко вчитися коли не маєш ніякого досвіду. На курсах можуть хоча б спрямувати , а так мною керує якась невпевненість. Я вивчив основи і відточив основи та jpa давно , але як далі вчити веб , мікросервіси вчитись вибудовувати архітектуру не знаю. Дуже важко систематизувати і усвідомити що за чим і як потрібно вчити , хоча по 2 години в день в джаву залипати круто, але треба система.
А все просто із-за страху майбутнього почалось бо я не знаю що буде і як потім, от мені тільки як 15 а я вже хочу розвиватись в цьому і ставати професіоналом хоча не маю багато можливостей , щоб попросту мати змогу і шанс в майбутньому
На мою думку одним з головних стовпів для роботи в команді повинна бути чесність. Це зовсім не просто, тому що брехня це клей для нашого суспільства з усіма його протиріччями. Але на мою думку, поки команда не чесна це не команда. Для перевірки можна використовувати ситуацію коли сіньйор має визнати перед джуніором що він щось не знає, в чомусь помилився або знає менше в темі ніж джуніор.
👏👏👏
Що таке активна частина заняття? Що на ній відбувається?
Це частина заняття, на якій учасники роблять різні індивідуальні, або командні практичні завдання.
Щось cglib не хоче працювати на Java 17. Падає ще на "new Enhancer()" з "CodeGenerationException, InaccessibleObjectException"
Його підтримує тільки Spring... Тому підключіть собі через мавен не cglib напряму, а spring-context і тоді буде працювати.
@@Bobocode так з "org.springframework.cglib.proxy.Enhancer" працює, дякую. Цікаво як в spring обійшли цю проблему, бо як я зрозумів це якась проблема з безпекою кода.
@@goodvin8554 якщо цікаво, - подивіться. Весь код Spring відкритий ;)
@@Bobocode для цього потрібно бути дуже зацікавленим 😀
29 хвилина, приклад Proxy. Такий приклад порушує SOLID принцип - Liskov substitution.
Та насправді не порушує. Клієнт мого рандомайзера, в нашому випадку статичний метод testRandomize, не змінюється і не залежить від того, яку саме реалізацію я передам. Тому тут немає порушення.
@@Bobocode Мова йде про класс RandomizerProxy. Він наслідується від Randomizer і змінює логіку не абстрактного метода.
@@user-nq4bt9lm2d патерн Proxy для того і є, щоб змінювати логіку не абстракного метода. (Прицьому, на мою думку, він не морушує згаданий вами принцип.)