Как стать автором
Обновить

Интернет-магазин. «Разделяй и властвуй» или «ОО уже и тут»

Чулан
А почему бы вам, коллеги, не приобщиться к интернет-магазинству?
Страшно? То-то же, и мне страшно. И здесь мы поговорим о том как побороть свои страхи. С помощью… объектно-ориентированного подхода.

Под конец этого ежегодного съезда он выступал перед собравшимися, широким повелительным, великолепным взмахом руки указывал на огромную карту Соединенных Штатов, которая покрывала всю стену
за его спиной, и говорил так:
— Вот он, ваш рынок! Идите и продавайте!
Томас Вулф, «Домой возврата нет»


Один мой знакомый интернет-созидатель весьма ловко зарабатывает на всевозможных потомках баннерной системы. Сайты, реклама, рейтинги цитирования… Однажды я его спросил — а почему бы тебе не смастерить собственный интернет-магазин (далее — «И-М»)? Мол, доходы в разы выше. В ответ он помолчал и сказал — сложно это.

Блоки и интерфейсы

Да, это сложно. Но путь решения проблем на пути становления интернет-магазинации на мой взгляд есть. Это классический «Divide and Conquer» — «Разделяй и властвуй», применяемый, в частности, в объектно-ориентированном программировании. Делим схему на слабозависимые блоки и соединяем через интерфейсы. Реализатора интерфейса впоследствии можно менять по своему усмотрению без воздействия на процесс в целом. Итак, посмотрим на схему ниже.

Use Case схема интернет-магазина

Здесь мы видим блоки по одну сторону баррикад: Промоутер, Склад, Продавец, Курьер. На другой стороне — Клиент. И, с потугой на нейтральную Швейцарию, — Платежная система.

Что с этими блоками делать?

Во-первых, заставить их поддерживать определенные интерфейсы. Назвался складом — будь добр, реализуй поддержку методов GetItemsList() и ReserveItem(). Да, ребята, да. Время Excel-я прошло, придется ставить сервак, покупать софт и тянуть выделенку. Иначе будут покупать у кого-то другого.

Кстати, для каждого блока это обинтерфейсчивание вполне реализуемо силами одного человека. Даже я лично возьмусь.

Конструируем И-М

Теперь примерим на одного человека возможность созидания И-М.

Итак, вперед выходит новый будущий интернет-торговец. Предположим, что домен RussianVegetables.com он уже купил. Далее он выбирает из списка овощебаз наиболее подходящий ему. Например по ценам (тут есть один маленький бонус, но о нем мы поговрим в следующей статье).

Поехали дальше. Раскручивать будем сами? Если нет, то ищем промоутера, объясняем ему схему и отправляем промоутить.

Итак, к нам пришел покупатель. Он посмотрел список товаров от Склада. И заказал мешок кормового турнепса. При этом он заполнил форму доставки. Кстати, ее писали вовсе даже и не мы сами. Мы просто вставили вызов формочки предоставленной интерфейсом курьера. Оплату покупатель сделал через внешнюю Платежную систему. Мы забронировали мешок турнепса на Складе и пнули Курьера через те же интерфейсы. Курьер пошел, забрал на Складе товар и довез его покупателю. Примечание: запутанные процессы покупки мы распутаем в следующих статьях.

А покупатель все это время думал, что перед ним мегакомпания со своим складом, курьерской службой и прочей атрибутикой. Наивный.
Выводы

Как мы видим, каждый блок вполне реализуем одним человеком.

И что — минусов нет? Да сколько угодно! Ответственность делится, поэтому случаи service temporarily unavailable придется вписывать в контракт с каждым интерфейсо-реализатором. И да, — самый главный минус — работать все равно придется :)
Теги:
Хабы:
Всего голосов 6: ↑3 и ↓3 0
Просмотры 2.2K
Комментарии Комментарии 20