Использование интерфейсов в своих проектах20.01.2019, 22:03. Показов 1198. Ответов 12
Добрый вечер коллеги!
Тема избита до неузнаваемости. Одно дело понять и совсем другое осознать. Осознать для чего нужны интерфейсы. С теорией всё ясно: Интерфейс это 100% абстрактный класс не имеющий реализации. Классы реализующие интерфейс обязуются иметь методы объявленные в интерфейсе иначе - contains 1 abstract method and must therefore be declared abstract or implement the remaining methods Интерфейс это контракт, шаблон для потомков. Возникла ситуация реального применения в своих проектах. Ниже привел диаграмму из своего проекта. До этого интерфейсы не использовал. Судя по диаграмме, я правильно применяю концепцию использования интерфейса? Диаграмма d.pdf Спасибо!
0
|
|
| 20.01.2019, 22:03 | |
|
Ответы с готовыми решениями:
12
Использование OpenSource ПО в своих проектах. Распространение внедрённого кода Разработка интерфейсов, использование механизма наследования интерфейсов и применение их в программах Беспроводные джойстики в своих проектах(MAR105c, nrf24 и пр) |
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
| 20.01.2019, 22:29 | |
|
Судя по цепочки наследований что-то явно пошло не так
0
|
|
| 20.01.2019, 23:22 [ТС] | |
|
Jewbacabra, Что вы имеете в виду?
Уточните пожалуйста, где именно косяк? Спасибо!
0
|
|
| 20.01.2019, 23:34 [ТС] | |
|
Jewbacabra, Если вы о том, почему блог наследует у администратора?
То тут все просто, это код для окружения Admin. В этом окружении только пользователи окружения Admin. Всего в проекте 3 окружения. Admin Cms General Привожу схему ниже.
0
|
|
| 20.01.2019, 23:38 [ТС] | |
|
0
|
|
| 20.01.2019, 23:41 [ТС] | |
|
0
|
|
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
| 21.01.2019, 00:02 | |
|
popryduhin, все это выглядит как наследование ради наследования. Что это за классы, какую задачу решает каждый из классов?
0
|
|
| 21.01.2019, 00:23 [ТС] | ||||||||
|
Выношу каждую сущность в отдельный класс. Исходя из моего проекта Model - абстрактный класс. вот кстати его код
что касается конкретно моделей. Да. Они тоже имеют свою иерархию Есть блог - блог это отдельная сущность = отдельный класс Блог в себе содержит что? Да, правильно посты и рубрики. Но тут главное не перегибать палку. Но в целом логично. Как вы считаете? Спасибо! Добавлено через 2 минуты Пока в классе Blog нет не одной реализации но потом она появится, я не сомневаюсь. Добавлено через 6 минут
0
|
||||||||
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|||||
| 21.01.2019, 00:58 | |||||
|
В общем - google - объектно ориентированное проектирование, паттерны.
0
|
|||||
| 21.01.2019, 13:05 [ТС] | |
|
Jewbacabra, как раз сейчас этим и занимаюсь.
Добавлено через 1 час 0 минут Для тех кто ищет ответ, достаточно интересная заметка расположена здесь https://m.habr.com/ru/post/325478/ Добавлено через 2 минуты Речь идет о смысловом наследовании. Добавлено через 1 час 54 минуты Ещё одна интересная ссылка https://refactoring.guru/ru/design-patterns Добавлено через 4 часа 57 минут Jewbacabra, Я всё понял... сын : Папа, ну почему я ещё не программист? Я же уже могу писать программы. Ну посмотри же на мой код. папа: Сын мой, а не всё так просто. Да - ты можешь писать программы. Но этого не достаточно для того чтобы быть программистом. Пришло время познать еще одну истину. И познать новый виток знаний! "Паттерны" Гордо промолвил отец! Отправлялся в Google! Познай истину. сын: Но как я узнаю что это "Паттерн"? отец: "Паттерн" подаст тебе знак! Добавлено через 4 часа 2 минуты И всё же. Нужно ответить на вопрос, нужен ли в приведенной схеме интерфейс? Или же это интерфейс ради интерфейса? )))
1
|
|
|
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
|
||
| 21.01.2019, 13:41 | ||
|
Смысл интерфейса в том, чтобы уменьшить зависимость от конкретной реализации. Вам нужна поддержка разных реализаций? Например сегодня у вас mysql и логи в файл, завтра postgresql и логи в кибану? Или например на проде вы отправляете смс, а в тестах у вас заглушка.
1
|
||
| 21.01.2019, 14:26 [ТС] | ||
|
tarasalk, Спасибо!
Примерно я ожидал похожий ответ. Вы только подтвердили мои ожидания. Я не зря в самом начале озвучил
Еще раз спасибо!
0
|
||
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,822
|
|
| 24.01.2019, 18:02 | |
|
popryduhin, Простой пример, была программа, которая работала на перфокартах. Потом появились магнитные носители. И люди задумались, неплохо было бы, чтобы сама программа не зависела от устройств ввода/вывода и договорились, что каждое устройство должно поддерживать одинаковый набор функций.
Интерфейсы позволяют с легкостью заменять отдельные модули, не затрагивая остальной код. Максимум что вам придется сделать это написать класс, реализующий требуемый интерфейс.
1
|
|
| 24.01.2019, 18:02 | |
|
Помогаю со студенческими работами здесь
13
Какой процент возможностей фреймворка используете в своих проектах? Используете ли вы ViewModelLocator из MVVM Light toolkit в своих проектах? Как правильно использовать свой обновляемый проект в других своих проектах Использование ASM в проектах на Си Использование gsl в проектах Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|