powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вопрос по Interface segregation из SOLID
8 сообщений из 8, страница 1 из 1
Вопрос по Interface segregation из SOLID
    #39520964
_rumbler_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть Class1 , который использовало одно приложение ч/з интерфейс IClass1 . Теперь добавилось еще одно приложение. И оно тоже использует Class1 ч/з IClass1 , но для второго приложения в Class1 добавилось несколько методов, которые не надо в первом приложении, и не все старые методы Class1 надо во втором. Как лучше сделать?

1.
Код: c#
1.
2.
3.
//забить, расширить интерфейс IClass1, теперь в нем будет то, что надо обоим приложениям
public Class1: IClass1
 



2.
Код: c#
1.
2.
3.
4.
5.
//Class1 и IClass1 не меняется, там только то, что надо было первому приложению
public Class1: IClass1 

//добавить новые Class12 и IClass2, в Class12 реализовать недостающие методы, в IClass2 только то, что надо второму приложению 
public Class12: Class1, IClass2 



3.
Код: c#
1.
//что-то другое
...
Рейтинг: 0 / 0
Вопрос по Interface segregation из SOLID
    #39520974
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_rumbler_,

Недостаточно информации, чтобы принять хоть какое-то вменяемое решение.

Что за Class1?
Какие у него обязанности?
Почему Class1 public, если есть интефрейс?
Что решает здесь интерфейс в данном случае?
Относятся ли добавленные методы к обязанностям класса?

То, что два приложения используют разные методы класса, говорит о том, что они используют его по-разному, значит скорее всего класс слишком много на себя берёт. Решать можно по-разному, нужно больше информации.
...
Рейтинг: 0 / 0
Вопрос по Interface segregation из SOLID
    #39521298
_rumbler_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

hVosttЧто за Class1?


OrganizationService , который используется в контроллерах первого и второго приложения

hVosttКакие у него обязанности?


Запросы из иерархического справочника организаций. В первом приложении запросы всех организаций. Во-втором - запросы организаций, которые для организации текущего авторизованного пользователя:
- либо являются обслуживаемыми организациями
- либо содержат потомков, которые являются обслуживаемыми организациями
- +права на организации

hVosttПочему Class1 public, если есть интефрейс?
Что решает здесь интерфейс в данном случае?


тесты

hVosttОтносятся ли добавленные методы к обязанностям класса?


на мой взгляд, да. но, после добавления второго приложения, почти все классы ISomeService , стали такими: вроде и "вашим и нашим"
...
Рейтинг: 0 / 0
Вопрос по Interface segregation из SOLID
    #39521339
_rumbler_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или это уже не к Interface segregation
...
Рейтинг: 0 / 0
Вопрос по Interface segregation из SOLID
    #39521352
_rumbler_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и еще до кучи такой вопрос, чисто теоретический
допустим, у нас есть интерфейс с методом

Код: c#
1.
some(a=null, b=null, c=null)



в реализации метода идет case в зависимости от комбинации входных параметров:
a=null, b=null, c!=null – танцуем,
a=null, b!=null, c=null – поем

если мы метод "разрежем" на много метододов, с ограниченной сигнатурой и осмысленным именем, типа
dance(c)
это же он, принцип сегрегации интерфейса?
...
Рейтинг: 0 / 0
Вопрос по Interface segregation из SOLID
    #39521376
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_rumbler_Запросы из иерархического справочника организаций. В первом приложении запросы всех организаций. Во-втором - запросы организаций, которые для организации текущего авторизованного пользователя:
- либо являются обслуживаемыми организациями
- либо содержат потомков, которые являются обслуживаемыми организациями

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

_rumbler_- +права на организации

Я бы правами рулил отдельно.


_rumbler_на мой взгляд, да. но, после добавления второго приложения, почти все классы ISomeService , стали такими: вроде и "вашим и нашим"

Ну в целом не вижу причин для беспокойства.
...
Рейтинг: 0 / 0
Вопрос по Interface segregation из SOLID
    #39521377
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_rumbler_или это уже не к Interface segregation

Совершенно точно лишнее.
...
Рейтинг: 0 / 0
Вопрос по Interface segregation из SOLID
    #39521378
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_rumbler_это же он, принцип сегрегации интерфейса?

Совершенно точно нет.

Суть сегрегации в том, что клиент должен пользоваться всеми методами интерфейса. Если он пользуется ограниченной частью, то возможно, надо выделить отдельный интерфейс. Но это не обязательное правило, зависит от ситуации, и надо учитывать обязанности. Дробить на кучу интерфейсов это антипаттерн.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вопрос по Interface segregation из SOLID
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]