Шаблон адаптера упоминается в Википедии для устранения несовместимости между ожидаемым интерфейсом и фактическим интерфейсом.Использование шаблона Adapter/Facade для прогнозирования несовместимых интерфейсов и сложности?
Фасад, как говорят, скрывает сложные реализации и представляет собой упрощенный API.
Однако, будут ли эти шаблоны использоваться даже при отсутствии этих проблем? Ака, преждевременно использовать эти шаблоны в ожидании будущей несовместимости и сложности?
Я столкнулся с кодом, в котором был реализован класс-оболочка с точной копией интерфейса внутреннего класса - он имел все общедоступные методы оригинала с точно такими же параметрами. Класс-оболочка и внутренний класс также были определены в той же сборке.
Как так:
public class ClassifierImplementation
{
private Classifier classifier_;
public Wrapper() { classifier_ = new Classifier(); }
public int[] Classify(double[] values, int seed)
{
return classifier_.Classify(values, seed);
}
// And other more public methods
}
Что бы Обоснованием такой реализации?
Я вижу .... Спасибо за освещающий ответ! – Cardin
Я спросил оригинального разработчика, и ответ из-за соглашений на C++. В C++, если мы предоставили файл .h, который имеет только метод Classify(), пользователи могут скомпилировать свой код с файлом .h. Мы можем поменять местами фактическую библиотеку в любое время, когда захотим - пользователям не нужно будет перекомпилировать, нужно только relink (iirc). Шаблон адаптера, если я правильно понял, но тот, который также касается проблем на компиляторе и компоновщике C++. – Cardin
Привет! ... Да, C++ делает .h включение старого C-way ... –