Какое хорошее название для класса фасада?
небольшой фон: мы создаем библиотеку / структуру для работы с научными моделями. У нас есть интерфейс Model
который определяет операции, которые должна реализовать модель, что довольно минимально. То есть:Model
интерфейс определяет контракт модели С точки зрения реализации модели.
платформа добавляет кучу других функций вокруг модели, но прямо сейчас клиентский код должен получить доступ к этой функциональности используя кучу других классов, таких как ModelInfo
, ModelHost
, ModelInstance
, etc.
в нашем приложении, которое использует эту структуру, мы не хотим на самом деле иметь дело со всем этим механизмом запуска моделей и т. д. Поэтому мы решили использовать фасад шаблон чтобы обернуть функциональность фреймворка в простой в использовании объект. (Мы уже применили этот шаблон к другим частям структуры, с хорошим успехом.)
вот вопрос: учитывая, что мы уже есть интерфейс Model
, что было бы хорошим именем для класса façade? на Model
интерфейс-это контракт между рамками и модель реализации, и новый класс определит контракт между платформой и клиентское приложение.
или, в более общем плане: когда у нас есть абстракция, предоставляемая библиотекой или фреймворком, как мы можем назвать "две стороны" абстракции, чтобы ясно определите интерфейсы" поставщик "и" потребитель " для абстракции?
(если это имеет значение, для этого проекта мы используем Java 6.)
4 ответов
Я знаю, это кажется банальным, но... вы рассматривали возможность использования "ModelFacade
" как имя класса для класса фасада? Я думаю, с документацией, которая указывает, что интерфейс уже был назван Model
, это кажется относительно простым и очень ясно, какой шаблон дизайна вы используете.
Как насчет * поставщика и * потребителя? Я думаю, ты сам сказал это в своем вопросе. Возможно, * производитель и * потребитель лучше подходят?
в обсуждениях внутри нашей команды был предложен другой вариант: мы можем переименовать существующий Model
интерфейс к чему-то еще, и просто вызовите новый фасад Model
. На самом деле, их обоих можно назвать Model
прямо сейчас, потому что они будут жить в отдельных пакетах. (Хотя я не поклонник классов с одинаковыми именами в разных пространствах имен.)
PureMVC использует синглтон с именем ApplicationFacade
и регистрирует все модели с помощью таких методов, как registerProxy
, которые определены в IFacade