Аннотация:
Паттерн Abstract Factory предоставляет интерфейс для создания семейств связанных или зависимых объектов (далее — продукты), позволяя не указывать их конкретные классы.
У меня вопрос — я тоже хочу быть писателем!
Но совесть не позволяет переписывать у других — это раз и просто переводить это два :)
даже с масенькими изменениями.
Как себя побороть?
Ваше предложения?
Получается ситуация — я что-то не знаю. Вместо того чтобы получить последовательность источников для прочтения: GoF, Grand... я путаюсь в куче предложенных ссылок от Google, тысячи авторов пишут одно и тоже :( да ещё и ссылки на первоисточники забывают :(((
Здравствуйте, denis miller, Вы писали:
DM>У меня вопрос — я тоже хочу быть писателем! DM>Но совесть не позволяет переписывать у других — это раз и просто переводить это два DM>даже с масенькими изменениями.
DM>Как себя побороть? DM>Ваше предложения?
А не пробовали просто писать именно "свое", самим собою "произведенное", вместо вот-такого подначивания других? Каждый пишет в меру своих желаний, то, что ему хочется.
Михаил вот захотел рассказать людям в своей статье об одном из паттернов, ну и что здесь плохого — вы читали, другие нет. Некоторые даже не знают о банде четырех, так для них статья будет полезна.
Вам хочется писать "свое" а не "перекладывать" других? Ну так пишите! В чем проблема то?
________________________________
When in Rome, do as the Romans do...
Здравствуйте, denis miller, Вы писали:
DM>У меня вопрос — я тоже хочу быть писателем! DM>Но совесть не позволяет переписывать у других — это раз и просто переводить это два DM>даже с масенькими изменениями.
Да пусть пишет. Будет все находиться в одном месте, в привычном формате. Главное, чтобы проблем с авторством не возникло.
Здравствуйте, denis miller, Вы писали:
DM>Но совесть не позволяет переписывать у других — это раз и просто переводить это два DM>даже с масенькими изменениями.
Если я правильно понял этот тонкий намёк, то позволю себе поддержать автора.
Кроме общеизвестной сути паттерна, Михаил привёл пару конкретных интересных трюков с дженериками и с атрибутами, и именно эти детали принесли лично мне пользу от прочтения статьи. Тем более, процент людей, квалифицированно применяющих паттерны, к сожалению, настолько мал, что ещё одна статья, на мой взгляд не помешает, а наоборот кому-то может открыть глаза.
И в качестве дополнения к материалу статьи ещё такой сценарий. Если нужно динамически пополнять фабрику, не изменяя её интерфейса, то достаточно для каждого нового типа продукта просто добавить его класс в сборку.
По сборке (или даже в разных сборках) таким образом будут разбросаны классы, реализующие интерфейс IWidget.
Абстрактная фабрика, которая реализована как Синглтон, при загрузке один раз сканирует сборку(сборки) на предмет наличия таких классов, и добавляет типы всех найденных классов в хеш-таблицу.
Хеш-таблица содержится в фабрике и позволяет по требованию создать экземпляр конкретного объекта.
Список всех возможных продуктов показывается пользователю. По его требованию (т.е. когда нужно создать продукт) фабрика лезет в хеш-таблицу, достает тип, создаёт его экземпляр (например при помощи Activator.CreateInstance) и возвращает пользователю.
В качестве этикетки (идентификатора типа продукта, ключа в хеш-таблице) можно взять любую строку-маркер и пометить класс продукта этим атрибутом.
Здравствуйте, denis miller, Вы писали:
DM>>>У меня вопрос — я тоже хочу быть писателем! AXX>>Вам хочется писать "свое" а не "перекладывать" других? Ну так пишите! В чем проблема то?
DM>Проблема 1 — нет своего DM>Проблема 2 — "перекладывать" я бы не против, но совесть не позволяет.
DM>Мои решения. Решение проблемы 1 — научные изыскания. Проблемы 2 — писать по принципу "белой комнаты".
DM>Мне интересны ваши предложения — как себя уговорить
"Элементарно, Ватсон!" (с) Шерлок Холмс
Я бы на вашем месте просто занялся проблемой 1 и все, раз уж хочется публиковать статьи, а "перекладывать" совесть не позволяет. А насчет уговорить... ну как-бы так выразиться то... Вообщем, если мне чего-то хочется, то знаете, как-то не приходится себя уговаривать
________________________________
When in Rome, do as the Romans do...
DM>>Мои решения. Решение проблемы 1 — научные изыскания. Проблемы 2 — писать по принципу "белой комнаты". DM>>Мне интересны ваши предложения — как себя уговорить
Я нашел для себя решение проблемы с плагиатом и повтором в статье:
Здравствуйте, Кирилл Осенков, Вы писали:
КО>И в качестве дополнения к материалу статьи ещё такой сценарий. Если нужно динамически пополнять фабрику, не изменяя её интерфейса, то достаточно для каждого нового типа продукта просто добавить его класс в сборку. КО>По сборке (или даже в разных сборках) таким образом будут разбросаны классы, реализующие интерфейс IWidget. КО>Абстрактная фабрика, которая реализована как Синглтон, при загрузке один раз сканирует сборку(сборки) на предмет наличия таких классов, и добавляет типы всех найденных классов в хеш-таблицу. КО>Хеш-таблица содержится в фабрике и позволяет по требованию создать экземпляр конкретного объекта. КО>Список всех возможных продуктов показывается пользователю. По его требованию (т.е. когда нужно создать продукт) фабрика лезет в хеш-таблицу, достает тип, создаёт его экземпляр (например при помощи Activator.CreateInstance) и возвращает пользователю. КО>В качестве этикетки (идентификатора типа продукта, ключа в хеш-таблице) можно взять любую строку-маркер и пометить класс продукта этим атрибутом.
Далеко не каждая фабрика может позволить себе такие пассы при первом обращении к ней
Во вторых, когда есть дженерики, вместо того, что бы придумывать "как бы оно всё само «автоматически» делалось" гораздо полезнее покумекать, как бы сделать так, чтобы исключить различное шаманство навроде reflection и свести к минимуму или узкой локализации преобразования типов. ИМХО
Автору это вполне удалось, так что двумя руками за "позволю себе поддержать автора"
... << RSDN@Home 1.2.0 alpha rev. 643>>
Now playing: «Тихо в лесу…»
Help will always be given at Hogwarts to those who ask for it.
Здравствуйте, _FRED_, Вы писали:
_FR>Далеко не каждая фабрика может позволить себе такие пассы при первом обращении к ней
Согласен.
_FR>Во вторых, когда есть дженерики, вместо того, что бы придумывать "как бы оно всё само «автоматически» делалось" гораздо полезнее покумекать, как бы сделать так, чтобы исключить различное шаманство навроде reflection ...
Ну это каждый решает для себя сам по ситуации. У меня уже было пару ситуаций, где сканирование типов сборки сработало просто на ура.
Когда производительность не критична, можно и пробежаться по типам. Да и рефлекшн отличная штука, добавляет декларативности, читабельности и выразительности, когда речь не идёт о борьбе за каждую миллисекунду.
_FR>и свести к минимуму или узкой локализации преобразования типов. ИМХО
Да, преобразования типов и переменные типа object я тоже ненавижу всей душой