середа, 31 липня 2013 р.

План на Серпень

З сьогоднішнього дня розбиваю свій робочий тиждень на такі додаткові  цілі, які допоможуть мені розвиватись, як програмісту:


1) Понеділок: вивчення нової мови програмування (Perl, Ruby, Phyton, Lua);
2) Вівторок: написання методу швидкого сортування на новій мові програмування (зі збереженням працюючої версії на github.com);
3) Середа: читання праць Дональда Кнута;
4) Четвер: перегляд коду opensource проектів на Java (в серпні лише Spring Framework);
5) П'ятниця: написання власного Web проекту на java: htmlLearner.
6) Субота: Перегляд відео на youtube.com (або на DOU.ua) на каналах: google, eclipse, oracle, java, spring.
7) Неділя: перегляд новин в IT блогах.



Примітка:
1) Виконання кожної цілі повинно тривати від 30 хв до 1 години;

2) Виконання кожної цілі починається о 5:00 кожного дня;
3) Кожного дня потрібно лягати спати до 10ї години вечора.
4) Результат виконання кожного денного завдання має бути описаний в даному блозі (допис, заголовком якого є день місяця, про який звітується)!

вівторок, 23 липня 2013 р.

DAO

Data Access Object

Щойно зрозумів, що за риба, DAO.

DAO  - це інкапсуляція. Якщо потрібно змінити джерело даних (наприклад, прості файли замінити базою), або сам процес отримання даних(наприклад, після переходу на нові технології) - переписуєм DAO рівень і все. Швидко і безболісно.

Single responsibility зберігається. Бо кожен DAO відповідає лише за одну річ: отримання даних з певного джерела. Раніше я думав, що таким джерелом може бути тільки база даних. Тепер я впевнений, що це може бути будь-що. Наприклад: файл, REST сервіс, будь-який інший сервіс, електро-сигнал, тощо.

З чого складається DAO?


Оскільки призначення DAO - доступ до даних, то DAO мусить ці дані якось віддавати іншим частинам програми. Тому DAO має інтерфейс. Воно скрадається з інтерфейсу і його реалізації. В більшості випадків переписувати прийдеться лише реалізацію. Про реалізацю друзі DAO нічого не повинні знати, їм потрібні лише дані, які вони зможуть використати у своїх цілях.

 В якому форматі DAO методи мають повертати дані?

Клієнти DAO можуть теж мінятись. Одні люблять дані в форматі XML, інші в JSON форматі, ще інші не переймаються і просять у відповідь лише текст. Але бідний DAO не повинен мінятись, при зміні клієнтів, він повинен задовольняти загальні потреби суспільства. Тому він віддає свої дані у вигляді POJO (для Java).

Питання: чому саме POJO, JSON теж стандарт?
Відповідь: Окей, але якщо клієнти DAO використовують одну бібліотеку для роботи з JSON (наприклад, org.json), а наш DAO метод повертає дані у JSON форматі використовуючи бібліотеку net.sf.json? Краще хай повертає в POJO, а клієнти з POJO можуть зробити собі все що захочуть...