1
0
mirror of https://github.com/twirl/The-API-Book.git synced 2025-01-23 17:53:04 +02:00

Уровни абстракции

This commit is contained in:
Sergey Konstantinov 2015-03-12 22:17:44 +03:00
parent 58da4edc13
commit 1becd397e6

View File

@ -129,7 +129,21 @@
<p>Перейдём теперь непосредственно к проектированию api.</p>
<h3></h3>
<h3>Уровни абстракции</h3>
<p>"Разделите свой код на уровни абстракции" - пожалуй, самый общий совет для разработчиков программного обеспечения. Что под этим обычно подразумевается?</p>
<p>Вспомним, что программный продукт - это средство связи контекстов, средство преобразования терминов и операций одной предметной области в другую. Чем дальше друг от друга эти области отстоят - тем большее число промежуточных контекстов можно ввести. Например, модель OSI, которую часто приводят как эталон разделения уровней абстракции, насчитывает семь промежуточных этапов по дороге от аппаратного обеспечения к протоколам уровня приложений.</p>
<p>Если говорить о разделении уровней абстракции именно с точки зрения api, то оно очень желательно по нескольким причинам:</p>
<ul><li>Разделение проекта на несколько независимых частей; архитектура каждой из них, таким образом, становится проще, и упрощается интеграция;</li>
<li>с помощью такого разделения гораздо легче добиваться кроссплатформенности путём отделения платформо-зависимой логики в отдельный уровень (или уровни) абстракции.</li></ul>
<p>И главное:</p>
<ul><li>Упрощается задача для ваших клиентов; правильно разделённые уровни абстракции означают, что разработчикам не придется разбираться со всей номенклатурой сущностей вашего api - им достаточно будет работать только с объектами высокого уровня, отвечающими непосредственно за решение их задач.</li></ul>
<p>Если мы вернёмся к нашему примеру с погодным api, то увидим, что один уровень абстракции выделился автоматически: http api. Мы можем построить прочие виды api поверх базового http. Можем ли мы выделить ещё какие-то уровни, скажем, внутри самого http api?</p>
<!--
<h2>О проектировании API</h2>