|
Вопрос по Interface segregation из SOLID
|
|||
---|---|---|---|
#18+
Есть Class1 , который использовало одно приложение ч/з интерфейс IClass1 . Теперь добавилось еще одно приложение. И оно тоже использует Class1 ч/з IClass1 , но для второго приложения в Class1 добавилось несколько методов, которые не надо в первом приложении, и не все старые методы Class1 надо во втором. Как лучше сделать? 1. Код: c# 1. 2. 3.
2. Код: c# 1. 2. 3. 4. 5.
3. Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2017, 11:00 |
|
Вопрос по Interface segregation из SOLID
|
|||
---|---|---|---|
#18+
_rumbler_, Недостаточно информации, чтобы принять хоть какое-то вменяемое решение. Что за Class1? Какие у него обязанности? Почему Class1 public, если есть интефрейс? Что решает здесь интерфейс в данном случае? Относятся ли добавленные методы к обязанностям класса? То, что два приложения используют разные методы класса, говорит о том, что они используют его по-разному, значит скорее всего класс слишком много на себя берёт. Решать можно по-разному, нужно больше информации. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2017, 11:17 |
|
Вопрос по Interface segregation из SOLID
|
|||
---|---|---|---|
#18+
hVostt, hVosttЧто за Class1? OrganizationService , который используется в контроллерах первого и второго приложения hVosttКакие у него обязанности? Запросы из иерархического справочника организаций. В первом приложении запросы всех организаций. Во-втором - запросы организаций, которые для организации текущего авторизованного пользователя: - либо являются обслуживаемыми организациями - либо содержат потомков, которые являются обслуживаемыми организациями - +права на организации hVosttПочему Class1 public, если есть интефрейс? Что решает здесь интерфейс в данном случае? тесты hVosttОтносятся ли добавленные методы к обязанностям класса? на мой взгляд, да. но, после добавления второго приложения, почти все классы ISomeService , стали такими: вроде и "вашим и нашим" ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2017, 17:52 |
|
Вопрос по Interface segregation из SOLID
|
|||
---|---|---|---|
#18+
или это уже не к Interface segregation ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2017, 20:05 |
|
Вопрос по Interface segregation из SOLID
|
|||
---|---|---|---|
#18+
и еще до кучи такой вопрос, чисто теоретический допустим, у нас есть интерфейс с методом Код: c# 1.
в реализации метода идет case в зависимости от комбинации входных параметров: a=null, b=null, c!=null – танцуем, a=null, b!=null, c=null – поем … если мы метод "разрежем" на много метододов, с ограниченной сигнатурой и осмысленным именем, типа dance(c) это же он, принцип сегрегации интерфейса? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2017, 20:28 |
|
Вопрос по Interface segregation из SOLID
|
|||
---|---|---|---|
#18+
_rumbler_Запросы из иерархического справочника организаций. В первом приложении запросы всех организаций. Во-втором - запросы организаций, которые для организации текущего авторизованного пользователя: - либо являются обслуживаемыми организациями - либо содержат потомков, которые являются обслуживаемыми организациями Т.е. сервис представляет собой набор методов, инкапсулирующих запросы. По-хорошему, запросы стоит вынести вообще в отдельные классы запросов или спецификаций. Иначе сервис будет пухнуть, а так как от сервиса зависят разные приложения, придётся их обновлять. _rumbler_- +права на организации Я бы правами рулил отдельно. _rumbler_на мой взгляд, да. но, после добавления второго приложения, почти все классы ISomeService , стали такими: вроде и "вашим и нашим" Ну в целом не вижу причин для беспокойства. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2017, 21:36 |
|
Вопрос по Interface segregation из SOLID
|
|||
---|---|---|---|
#18+
_rumbler_или это уже не к Interface segregation Совершенно точно лишнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2017, 21:36 |
|
Вопрос по Interface segregation из SOLID
|
|||
---|---|---|---|
#18+
_rumbler_это же он, принцип сегрегации интерфейса? Совершенно точно нет. Суть сегрегации в том, что клиент должен пользоваться всеми методами интерфейса. Если он пользуется ограниченной частью, то возможно, надо выделить отдельный интерфейс. Но это не обязательное правило, зависит от ситуации, и надо учитывать обязанности. Дробить на кучу интерфейсов это антипаттерн. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2017, 21:39 |
|
|
start [/forum/topic.php?fid=18&fpage=25&tid=1355430]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 297ms |
total: | 445ms |
0 / 0 |