Создание Цепочки Поведения

Всем привет! В первой заметке я достаточно поверхностно упомянул о создании цепочки поведений.

В этом я хочу привести пример простой цепочки с пояснениями.

Со своей стороны буду рад критике и комментариям по поводу кода.

Итак, давайте представим, что наша цель — универсальный интерфейс для хранения пар ключ-значение, не вдаваясь в подробности реализации.

Все, что мы хотим сделать на первом этапе, — это определить, какой интерфейс будет у «рабочей» части:

  
   

-callback list_items() -> [term()].

-callback add_item(Id :: term(), Value :: any() )->ok|{error, any() }.

-callback get_item(Id :: term()) -> {ok, Value::any()}|{error, not_found}.

-callback del_item(Id :: term()) -> ok|{error, not_found}.



Интерфейс очень простой и никак не определяет, где хранятся значения — в дереве, хеш-таблице или простом списке.

Следующий момент — какую бы реализацию мы ни собирались определить, она обязательно будет иметь внутреннее состояние — то самое дерево, таблицу или список.

И для его хранения мы будем использовать стандартный gen_server. То есть у нас будет код, реализующий интерфейс, опирающийся на состояние, предоставляемое модулем, реализующим gen_server. Вот она, цепочка.

Теперь настал момент инициализации.

При запуске модуля реализации мы должны вместо него запустить интерфейсный модуль, а он, в свою очередь, обратится к gen_server. Где-то так: Выполнение:

start_link(_Params)->

Теги: #Erlang/OTP #Erlang/OTP

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.