|
|
|
Абстрактный класс или интерфейс?
|
|||
|---|---|---|---|
|
#18+
Разницу абстрактого класса и интерфейса понимаю, но есть вопрос: если абстрактный класс содержит только абстрактные методы - имеет ли он право на существование или логичнее и правильнее использовать интерфейс? ведь тут по сути уже не наследование, а просто контракт? Т.е. я думаю что абстрактный класс вообще следует использовать только в том случае, если нужно добавить общую реализацию к лишь некоторым методам из общего числа. И еще..слышал, что хорошим тоном считается на каждый класс реализовывать интерфейс? ссылка на GOF вроде была. Можете объяснить несколько подробней, какая цель преследуется? Проектирование лучше с интерфейсов как я понимаю начинать? Или все же там другая мысль подразумевается и в зачет идет идея анонимного интерфейса, который как бы в любом классе есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2015, 02:23 |
|
||
|
Абстрактный класс или интерфейс?
|
|||
|---|---|---|---|
|
#18+
ghoster17Разницу абстрактого класса и интерфейса понимаю, но есть вопрос: если абстрактный класс содержит только абстрактные методы - имеет ли он право на существование или логичнее и правильнее использовать интерфейс? Беда java- отсутствие множественного наследования. Причём некоторые бы и за ввести, но это сделать невозможно, увы. Поэтому интерфейс лучше- это потом позволит, если надо, включить его в другой класс. Тем более после появления методов по-умолчанию в JDK8 (это костыль на другую тему, но неплохо заменяет и множественное наследование). ghoster17И еще..слышал, что хорошим тоном считается на каждый класс реализовывать интерфейс? ссылка на GOF вроде была. Если параметром метода является интерфейс, то любой класс может реализовать этот интерфейс и подсунуть себя :) С другой стороны, если ты не пишешь библиотеку для всех (а ты не пишешь), то сейчас другой тренд :) - надо делать код как можно проще, включая иерархию наследования. Надо будет- ПОТОМ выделишь хоть интерфейс, хоть абстрактный класс. Чем проще будет другим читать твой код- тем лучше для тебя же. Да и сам через пару лет будешь читать этот код, как чужой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2015, 08:37 |
|
||
|
Абстрактный класс или интерфейс?
|
|||
|---|---|---|---|
|
#18+
ghoster17И еще..слышал, что хорошим тоном считается на каждый класс реализовывать интерфейс? ссылка на GOF вроде была. Ерунда. Нет такого в GoF. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2015, 08:49 |
|
||
|
Абстрактный класс или интерфейс?
|
|||
|---|---|---|---|
|
#18+
ghoster17Разницу абстрактого класса и интерфейса понимаю, но есть вопрос: если абстрактный класс содержит только абстрактные методы - имеет ли он право на существование или логичнее и правильнее использовать интерфейс? ведь тут по сути уже не наследование, а просто контракт? Т.е. я думаю что абстрактный класс вообще следует использовать только в том случае, если нужно добавить общую реализацию к лишь некоторым методам из общего числа. Ты должен спросить свою "предметную область". Нужен ли ей базовый метод в вершине иерархии. Или всё таки его стоит поместить в конкретный интерфейс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2015, 13:03 |
|
||
|
Абстрактный класс или интерфейс?
|
|||
|---|---|---|---|
|
#18+
maytonНужен ли ей базовый метод в вершине иерархии. Или всё таки его стоит поместить в конкретный интерфейс. ну я к тому и спрашиваю, что если у меня не будет ни одного базового метода с единой реализацией, когда мне может пригодиться abstract class? только на будущее, если на этапе проектирования я допускаю, что такой метод может появиться? BlazkowiczЕрунда. Нет такого в GoF. Утверждать не буду...я это в каком то вебинаре про паттерны проектирования собственно и слышал, что меня немного удивило. Alexey TominЕсли параметром метода является интерфейс, то любой класс может реализовать этот интерфейс и подсунуть себя :) А можно поподробней? Не совсем понял...и плохо это или хорошо? Вообще в enterprise-системах насколько сильно используют интерфейсы? Мне просто еще не довелось с такими поработать.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2015, 14:35 |
|
||
|
Абстрактный класс или интерфейс?
|
|||
|---|---|---|---|
|
#18+
ghoster17Alexey TominЕсли параметром метода является интерфейс, то любой класс может реализовать этот интерфейс и подсунуть себя :) А можно поподробней? Не совсем понял...и плохо это или хорошо? Хорошо. ghoster17Вообще в enterprise-системах насколько сильно используют интерфейсы? Мне просто еще не довелось с такими поработать.. Сильно. Но это смотря где :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2015, 14:53 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38913546&tid=2125663]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
52ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 335ms |

| 0 / 0 |
