Я начинаю задумываться о реализации контейнеров Inversion of Control в своих будущих проектах или рефакторингах, и мне было интересно, какие принципы (помимо шаблонов GoF) было бы интересно иметь в виду, когда речь идет о правильном проектировании зависимостей. Скажем, мне нужно спроектировать простое консольное приложение, которое будет искать книгу (по ISBN) в Amazon, если оно сможет получить доступ к Интернету или откатится к локальной базе данных (SQLite, SqlServerCE), когда нет доступного соединения. Таким образом, первоначальный дизайн может быть в значительной степени:
- IAmazonSearchProvider
- ILocalSearchProvider
- IResultsGenerator (в зависимости от IAmazonSearchProvider или ILocalSearchProvider)
- IOutputFormatter
- ConsoleApplication (зависит от IOutputFormatter)
Любое руководство будет по-настоящему оценено, большое спасибо заранее.