Подтвердить что ты не робот

Что такое шаблон дизайна шестиугольника

Я смотрел этот https://plus.google.com/events/ci2g23mk0lh9too9bgbp3rbut0k

они упоминают термин, который я не знаком с

Каков шаблон дизайна Hexagon?

4b9b3361

Ответ 1

От http://alistair.cockburn.us/Hexagonal+architecture и https://github.com/jschairb/sandbox/wiki/HexagonalArchitecture

Шестиугольная архитектура - это архитектура, определяемая установкой по всему периметру вашего приложения и адаптеры для взаимодействия ввода/вывода. Установив эту изоляцию слой, приложение не осознает природу вещей он взаимодействует с.

Создайте приложение для работы без пользовательского интерфейса или базы данных. вы можете запускать автоматические регрессионные тесты против приложения, работать когда база данных становится недоступной, и связывают приложения вместе без участия пользователя. - Алистер Кокберн

Ответ 2

Вы имеете в виду гексагональный шаблон дизайна?

Намерение гексагональной схемы дизайна

Разрешить приложение одинаково управляться пользователями, программами, автоматическими тестовыми или пакетными сценариями, а также разрабатываться и тестироваться отдельно от его возможных устройств и баз данных во время выполнения.

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

Подробнее об этом здесь

Ответ 3

По моему мнению, это немного шумовое слово для общей практики разработки программного обеспечения для разделения интересов. В основном говорится, что ваша логика ввода/вывода должна быть скрыта от вашей логики домена. Таким образом, основная бизнес-логика может быть адаптирована к разным "пользователям". Он очень тесно связан с шаблоном MVC.

Я думаю, что имя "гексагональной архитектуры" только что было составлено настоятелем. И некоторые люди его подбирают.

Ответ 4

Это больше похоже на общий дизайн системы. Вы в основном хотите, чтобы ваш код был одинаково дружелюбен ко всем желающим.

Чтобы поддержать это, например, веб-службы соответствуют стандартам и, вообще, повсеместно, поддерживают JSON. Зачем? Webclients входят во все формы, поэтому следующие стандарты позволяют вашим клиентам легко интегрироваться. JSON делает еще один шаг: он делает безлимитный пользовательский интерфейс.

С точки зрения технологии вы не можете полностью построить перспективный сервис. Просто убедитесь, что цель службы ясна/чиста и соответствует цели. Если эта цель больше не подходит, вам необходимо (а) новые службы

Это легче сказать, чем сделать. Когда вы начинаете навязываться вашим боссом, чтобы скомпрометировать эти принципы ради целесообразности, вы делаете то, что должны, чтобы заставить его/ее с вашей спины. Но взлом делается, и в целом результат заключается в том, что сервис принимает несвязанную логику, что она навсегда заканчивается владением.

Если вы можете управлять одним принципом в своем системном дизайне, это: Открыть для расширения. Закрыто для модификации

Ответ 5

Восьмиугольная форма

for (int i = 1; i <= 17; i++) {
        for (int j = 1; j <= 17; j++) {
            if (i == 1) {
                if (j > 6 && j < 12)
                    mtextView.append("* ");
                else
                    mtextView.append("   ");
            } else if (i > 1 && i < 7) {
                if (j == 9 - (i + 1) || j == 9 + (i + 1))
                    mtextView.append("*");
                else
                    mtextView.append("   ");
            } else if (i >= 7 && i <= 11) {
                if (j == 1 || j == 17)
                    mtextView.append("*");
                else
                    mtextView.append("   ");
            } else if (i >= 12 && i <= 16) {
                if (j == i - 10 || j == 18 - (i - 10))
                    mtextView.append("*");
                else
                    mtextView.append("   ");

            } else if (i == 17) {
                if (j > 6 && j < 12)
                    mtextView.append("* ");
                else
                    mtextView.append("   ");
            }
        }
        mtextView.append(Html.fromHtml("<br>"));
    }

}

}