"Кроме того, что, если существуют новые продукты, выходящие все время, каждый с различными investibility решениями и я не хочу обновлять свой базовый Клиентский класс каждый раз, когда это происходит?"
Это приходит на ум:
interface Investable { boolean isIvestible(Customer c); } class FooInvestible implements Investible { public boolean isInvestible(final Customer c) { // whatever logic, be it switch or other things } }
"проблема" с исходным использованием swtich и добавлением новых типов решений состоит в том, что Вы, вероятно, волнуете с некоторым огромным вложенным множеством крыс кода, который невозможно поддержать нормальным способом. Разделение решений в классы вынуждает принятие решений быть разделенным. Затем даже при использовании переключателя код, вероятно, останется более нормальным и удобным в сопровождении.
svn + ssh:
не просто использует SSH для аутентификации, но вместо этого выполняет все коммуникации через SSH. Это означает, что путь, который вам нужно будет использовать, является фактическим физическим путем к репозиторию на сервере.
Итак, если ваш репозиторий на сервере находится в / srv / svn / myrepo
, тогда правильный полный URI, который вы хотите проверить, - svn + ssh: // serverIP / srv / svn / myrepo / trunk / project
.
Также обратите внимание, что вы хотите установить установите ограниченные оболочки для пользователей SVN, иначе вы дадите им полный доступ к оболочке вашего сервера, что обычно не то, что вы хотите делать.
Обычно репозитории svn можно найти здесь:
svn://www.mysite.com/repo_name
... и svn поверх репозиториев ssh здесь:
svn+ssh://www.mysite.com/path-to-repos/repo_name
Пожалуйста, проверьте эти сообщения на serverfault.com: