Я пытаюсь понять, как реализовать заменяемые компоненты или интерфейс поставщика услуг в мире .NET. Я подозреваю, что просто не знаю подходящей терминологии для поиска.
В частности, я играю с классом Matrix
, который имеет разные бэкэнды. В самом простом случае матрица предоставляет двухпараметрические методы get и set и конструктор. Реализация не важна для конечного пользователя. Например, в зависимости от размера матриц, матрица может поддерживаться массивом в памяти, файлом или распределенным хранилищем значений ключей. Я хотел бы скрыть реализацию бэкэнда и позволить третьим сторонам предоставлять новые реализации бэкенда.
Идеальный API, вызванный из IronPython, скажем, может быть что-то вроде
a = matrix(data = 0, rows = 1000, cols = 10, backend = 'file://test.txt')
a[100, 2] = 1
print a[100, 2]
Что я должен читать, чтобы понять схему для этого типа проблемы?
Я играю в F # и IronPython, но не верю, что этот вопрос специфичен для какого-либо конкретного языка .Net.