2016-03-03 8 views
0

я следующая ситуация:Наилучшая практика для упаковки-структуры

У меня есть пакет х с классом А, который использует классы B и C. уровень доступа к классам В и С частными пакета. B и C реализуют один и тот же общедоступный интерфейс I.

Для лучшей организации кода я хотел бы сгруппировать классы B, C и I в другой пакет y, но БЕЗ изменения уровня доступа для публики.

Как я могу это сделать? Существуют ли другие способы, кроме создания общедоступного класса прокси D в пакете y с некоторыми статическими фабриками, производящими экземпляры I?

С наилучшими пожеланиями, Rokko_11

+1

Действительно ли зависит от B и C, или просто нужны экземпляры I, которые могут быть B и/или C? Если первый, A должен быть в том же пакете, что и B и C, это то, что означает пакет. –

+0

Я заметил, что ваш вопрос все еще «открыт» - так как вы не приняли ответ. Пожалуйста, посмотрите и решите, хотите ли вы [принять] (https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) ответ. Или дайте мне знать, есть ли что-то, что я могу сделать, чтобы улучшить свой вклад, чтобы заставить его принять достойный. Принятие помогает будущим читателям определить, разрешена ли проблема, и выражает признательность тем людям, которые нашли время, отвечая на вас. Благодаря! – GhostCat

ответ

1

Не позволяйте "статус-кво" диктовать свои дизайнерские решения.

Вы уже делаете «рефакторинг»; тогда: если есть веские причины для того, чтобы сделать B и C видимыми; затем сделать основные части этих классов общедоступными. Если нет, не делайте этого; и держит вещи локально пакетными.

Это действительно зависит от конкретного применения; и как B и C используются сегодня. Это решение не может быть принято другими людьми в stackoverflow.

Сторона примечания: только потому, что вам нужна фабрика; это не означает, что вещи должны быть статическими. Напротив - вы хотите как можно больше избегать «статического» материала; так как неразумное использование «статического» очень часто нарушает вашу способность проводить разумное модульное тестирование.

Смежные вопросы