В данном видео мы познакомимся с паттерном проектирования Adapter. Adapter, также известный, как обертка, является, наверное, самым часто используемым паттерном проектирования. По классификации, о которой было рассказано ранее, этот паттерн так же относится к классу структурных. Давайте, определим задачу, которую решает данный паттерн. Пусть есть некоторый объект и система, с которой этот объект должен взаимодействовать. При этом интерфейс объекта не может быть напрямую встроен в систему. В таком случае и используется паттерн Adapter. Он позволяет создать объект, который может обеспечить взаимодействие нашего исходного объекта с системой. Данная концепция является очень простой и часто находит применение не только в программировании, но и в реальной жизни. Примером использования этой концепции в реальной жизни может служить, например, переходник для розеток разных типов. Но, давайте, вернемся к программированию. Рассмотрим такой реалистичный пример: пусть имеется некоторая консольная утилита, которая читает данные из файла, обрабатывает их и сохраняет результат в другой файл. Вы пользуетесь системой, которая может создавать данные для обработки, но при этом сама их обрабатывать не умеет. В качестве обработчика она хочет видеть некоторый объект, который должен принимать данные в виде списка и возвращать результат обработки также в виде списка. Как видно, интерфейсы консольной утилиты и система совершенно не совместимы. В этот момент и появляется Adapter. Он представляет из себя объект с интерфейсом ввода-вывода, который требует система. При этом внутри Adapter при получении данных они преобразуется в файл, который затем передается на обработку консольной утилите. Результат обработки считывается из выходного файла и передается на вход системе. Проблема решена! Диаграмму классов данного паттерна вы можете сейчас видеть справа от меня. Как вы видите, все действительно очень просто. Подобным образом работают обертки над некоторыми библиотеками, такими как Fast text или Waffle obit. Когда вы узнаете про машинное обучение, вы познакомитесь с такой библиотека как Scikit-learn, в которой многие объекты, по сути, являются обертками над классами из других библиотек. При этом объекты из этой библиотеки имеют понятные названия и стандартизованный интерфейс доступа, что позволяет гораздо удобнее работать с ними, а не с изначальными классами из библиотек. В следующем видео мы рассмотрим, каким образом данный паттерн можно реализовать с использованием языка программирования Python.