?

Log in

No account? Create an account

Previous Entry | Next Entry

Появилась новая статья. А с ней - и новый раздел. "Архитектура". Давно хотел начать писать в этом направлении, да все никак не складывалось. Была одна статья о синглтонах, но больше про технику реализации.

И вот, наконец, сложилось. Статья о принципах модульного проектирования. Как сделать так, чтобы модуль можно было переиспользовать. Читайте: http://www.skipy.ru/architecture/module_design.html.

Обсуждение – в этой теме.

Comments

skipy_ru
Sep. 17th, 2010 06:05 am (UTC)
>> Вы их сначала реализуйте до конца, а потом сравните. Ничего похожего не будет.
>То что у них одна реализация -- отчетливо видно из определения класса AbstractConfiguration.

Если бы все методы AbstractConfiguration были final - можно было бы говорить о том, что реализация определена. А я сейчас возьму и переопределю все методы в DBConfiguration. Надо мне.

>> Хочу напомнить, что я говорю про объектно-ориентированные языки.
>Если у нас объектный язык с примесью функционального (Python, OCaml, F#), то -- функции (не обязательно объявленные в одном месте)+ их передача .

Объясняю еще раз - я говорю про ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ языки. Python, OCaml, F# могу позволять делать все, что им заблагорассудится. И иметь все проблемы, которые к этому прилагаются.

>Если чисто объектный и логика сложная, то получаем XXXConfigurationReader.

И чем отличается наличие класса конфигурации и нескольких XXXConfigurationReader от наличия абстрактного класса конфигурации и нескольких реализаций, выполняющих роль XXXConfigurationReader? А я Вам скажу чем. Если я оставлю один класс конфигурации и несколько XXXConfigurationReader-ов - то для возможности расширения этой картины и добавления новых XXXConfigurationReader-ов я вынужден буду высветить все set-методы для конфигурации. В случае наследования все поля - protected, и возможности для изменения нет.

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