![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Столкнулся с вопросом при реализации паттерна Abstract Factory на C#. Какую языковую конструкцию предпочтительнее употребить для абстрактной фабрики - абстрактный класс или интерфейс? И вообще - когда что употреблять лучше? Хотелось бы услышать ваши домыслы по этму вопросу.
Это сообщение отредактировал(а) Exception - 13.6.2006, 18:28 |
|||
|
||||
sammix |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 1.10.2005 Репутация: нет Всего: 2 |
Насколько я помню, абстрактные классы были давно, а интерфейсы являются новичками.
Даже само слово интерфейс как то больше по юзерски. Допустим юзеру нужно из класса какуюто определённую функциональность, тут интерфейс лучше, потому что юзер приводит класс к нужному ему интерфейсу, и получает список только нужной ему функциональности. Ну а если класс создавался при использовании абстрактных классов, то юзер соответсвенно получит из класса целую кучу функциональности нужной и не нужной. При этом создаётся еффект мусора ![]() Да и тем более класс может имплементить кучу интерфейсов, а наследовать только 1 класс. ( ну это я думаю вы знаете ). Это сообщение отредактировал(а) sammix - 13.6.2006, 19:45 |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Это понятно. Вопрос - что предпочтительнее именно в данном случае:
Добавлено @ 20:16 Глянул сюда: http://rsdn.ru/article/Patterns/AbstractFactory.xml Тут интерфейс оказывается всё-таки удобнее ввиду возможного множественного наследования. |
|||
|
||||
Dark Wanderer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 25.10.2004 Где: Кишинёв Репутация: нет Всего: нет |
Простите за незнание, но что это за конструкция такая со "<>". Чё это вообще означает?
--------------------
|
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
Dark Wanderer, читать MSDN о дженериках.
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Dark Wanderer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 25.10.2004 Где: Кишинёв Репутация: нет Всего: нет |
Void, спасибо!
--------------------
|
|||
|
||||
VisualProgrammerNET |
|
|||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 4 Всего: 6 |
Никогда бы не подумал, что Exception что-то не знает...
![]() -------------------- 3 ГОДА НА ![]() |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Пишу чисто мое ИМХО. Не читая никаких умных книжек и совсем не представляя что такое
Интерфейсы нужны для добавления некоторому классу функциональности (т.е. он уже есть, но ему чего-то нехватает). А абстактный класс --- это некий каркас, на который потом одевается функциональность. Но родительским типом становится наш абстрактный класс. Со всеми вытекающими последствиями. P.S. А в принципе между ними вообще нет никакой разници (кроме отсутствия множественного наследования от абстрактного класса). |
|||
|
||||
Сарт |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 29.4.2006 Репутация: 1 Всего: 0 |
Вставлю свои 5 копеек фирмы Philips, продукция-чайник.
Насколько я понял --интерфейс предлагает к наследованию ТОЛЬКО методы. абстрактный класс же --не только методы но и другие вкусности. --Интерфейс--наследовать сколько влезет,множественное наследие и прочее Абстрактный класс-не прокатит множественное наследие=) Так что подумай,что те нужнее--методы или методы+еще что то--и на основании этого делай выводы=). --------------------
[color=purple][/color]Died.Of course, System.StackOverflow |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
А как же события и свойства ? ![]() -------------------- ![]() |
|||
|
||||
Exception |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Только методы. Но, с другой стороны,
что также присутствует.
Учить паттерны, живо ![]() |
||||||
|
|||||||
Сарт |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 29.4.2006 Репутация: 1 Всего: 0 |
Так я ж и сказал ---компания Philips, продукт-чайник=)) Что знал то посоветовал.
P.S че за юмор--мессаги пишу,а кроличество этих мессаг не увеличивается?? сення во флейме точно больше 3-ех мессаг писал а как было 48 так и осталось=) --------------------
[color=purple][/color]Died.Of course, System.StackOverflow |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Сарт, флеймовые не засчитываются
![]() -------------------- ![]() |
|||
|
||||
Сарт |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 29.4.2006 Репутация: 1 Всего: 0 |
Ясно,сенкс=)
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Ты лучше расскажи как ты минус заработал ![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |