Показать сообщение отдельно
Старый 21.03.2017, 17:48   #10  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
вот типичный пример программирования (или настройки) через XML-файлы от Microsoft
Это не очень хороший пример

Цитата:
"Нужна возможность замены любых классов и методов целиком"
Вот эта возможность, как принцип проектирования ПО называется Dependency Injection, который в свою очередь является частным случаем Inversion of Control.

Я вот не возьмусь доказывать, как подобный подход скажется на TCO, так как у меня нет таких данных, но, в общем то, такой подход очень широко распространен. Например, Spring (https://spring.io/) - фреймворк #1 для enterprise решений в мире java - целиком построен на этом принципе.

Можно написать свою реализацию существующего интерфейса, задеплоить его в виде отдельного jar файла на application server, а в конфигурационном файле просписать, что в качестве реализации интерфейса использовать вот эту конкретную реализацию. Вот так примерно:

Код:
<bean name="customerRepository"
          class="com.demas.repository.HibernateCustomerRepositoryImpl" />
p.s. Да, в мире NET есть тоже очень много библиотек, реализующих этот паттерн. MS, если я не ошибаюсь, советует/поддерживает Unity (https://msdn.microsoft.com/library/ff647202.aspx). Но, нужно понимать, что в отличии от Spring - это просто DI контейнер, без всей тучи инфрастуктуры, которая написана вокруг него для Spring.

Последний раз редактировалось Андре; 21.03.2017 в 17:53.
За это сообщение автора поблагодарили: ax_mct (5), mazzy (2).