Понимание мотивационного плаката для принципа разделения интерфейса - PullRequest
0 голосов
/ 16 мая 2019

Почему "мотивационный плакат" для принципа разделения интерфейса на этой странице говорит: "Вы хотите, чтобы я включил это, где?"

enter image description here

Принцип интерфейса разделения говорит

Клиенты не должны зависеть от интерфейсов, которые они не делают использовать.

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

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

Ответы [ 2 ]

1 голос
/ 16 мая 2019

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

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

Итак, допустим, у вас есть важная вещь высокого уровня, например, переключатель / кнопка для запуска некоторых ядерных бомб.Если вы подключите кофеварку к нему, то у вас будет шанс все взорвать, потому что вы сделали свою важную ракетную установку зависимой от того, правильно ли работает ваша кофеварка.

Вот пример из реальной жизни:

Веб-клиент обменивается данными с веб-сервером.Веб-сервер обменивается данными с базой данных.

Если веб-клиент сможет напрямую обращаться к базе данных, то что произойдет, если клиент перестанет работать и потеряет 1000 запросов в секунду?

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

На постере эта кнопка выглядит довольно важной.Таким образом, как программист-творец, вы должны сказать «НЕТ», когда кто-то просит вас подключить кофеварку или что-то, что не требуется в ракетной пусковой установке.

0 голосов
/ 22 мая 2019

Похоже, что на плакате подразумевается, что толстые интерфейсы труднее понять и использовать, что верно, но это не точка разделения интерфейсов.

Интернет-провайдер занимается одним аспектом управления связью исплоченность в приложении.Небольшие, сплоченные API-интерфейсы избегают соединения разных клиентов друг с другом, обслуживая только одного клиента каждый.В этом отношении интерфейсная сегрегация перекрывается с одной ответственностью, поэтому я нахожу, что гигантский плакат Швейцарский армейский нож *1004* для одиночной ответственности имеет такой же смысл в изображении ошибки интерфейсной сегрегации.

Пользователь, который связаннекоторым инструментам, которые им не нужны, все равно приходится платить за эти инструменты, особенно в том смысле, как эти ненужные инструменты влияют на общий дизайн.Полезные инструменты должны быть приспособлены к бесполезным, и это приспособление влияет на взаимодействие с пользователем.

С точки зрения программного обеспечения это может быть так же просто, как бесполезная часть извлечения API сторонними библиотеками, которые пользователь не делает.нужно.

См. информацию о теге , чтобы немного больше узнать о фоне.

...