Let's imagine that we are developing a wrapper library for an API, which returns JSON documents as a response. And there are many endpoints that have similar structures, except some fragment and may have a different structure.
Continue reading...
Показаны сообщения с ярлыком Java. Показать все сообщения
Показаны сообщения с ярлыком Java. Показать все сообщения
вторник, 10 мая 2016 г.
понедельник, 19 ноября 2012 г.
Декларативное и императивное программирование
Вступление
Допустим, наше приложение тем или иным образом хранит информацию о странах и городах мира. Предположим, что нам нужно вывести все города, начинающиеся на букву "V", расположенные в странах, которые начинаются на "R". Представим, что программа написана на Java без использования СУБД, и данные хранятся в обыкновенных коллекциях. Тогда код получения требуемых городов может иметь вид:
for(Country country : countryList){ if(country.getName().startsWith("R")) for(City city:country.getCityList()) if(city.getName().startsWith("V")){ //что-то делаем с городом } }
Теперь пусть приложение использует СУБД, к примеру, Oracle. Теперь данные можно извлечь посредством простого запроса:
select ctr.name country_name, c.name city_name, c.city_id from countries ctr, cities c where 1=1 and c.country_id = ctr.country_id and ctr.name like 'R%' and c.name like 'V%'
Чем отличаются эти два способа извлечения данных? Помимо синтаксических отличий есть одно очень важное разграничение. В первом случае мы задаем инструкции, пошаговое выполнение которых приводит к извлечению нужных данных, а во втором - описываем данные, которые хотим получить, предоставляя СУБД возможность решить самостоятельно, каким способом эти данные извлечь. Первый подход называется императивным, а второй - декларативным. Рассмотрим эти понятия более подробно
Подписаться на:
Сообщения (Atom)