2013-08-20 2 views
1

Я читал много о «чистом коде» и «шаблоне проектирования», и они говорят, чтобы избежать «кода переключения/выбора» в коде. Они говорят, что «используйте полиморфизм» или «шаблон стратегии».избегать выбора случая по строковому значению

Как я могу избежать «выбора случая» (VB.Net) на строковое значение с помощью этой концепции?

select case value 

    case "abc" 
    method1() 

    case "def" 
    method2() 

end select 

даже если я построить завод, который возвращает объект, в зависимости от значения строки, «выберите случай» заявление еще ...

+0

В настоящее время Injection Dependency заменяет серьезные заводы. Ваш завод может быть XML-файлом, который вы можете редактировать без перекомпиляции кода. –

+0

Можете ли вы привести пример или внешнюю ссылку? – Neb

+0

Проверьте этот проект. http://www.codeproject.com/Articles/26466/Dependency-Injection-using-Spring-NET –

ответ

2

Если все методы используют один и тот же номер и тип параметры и тот же тип возвращаемого значения, вы можете просто добавить их в словарь, как это:

Dim methods = New Dictionary(Of String, Action) 
methods.Add("abc", AddressOf method1) 
methods.Add("def", AddressOf method2) 

и затем вызвать его, как это

methods(value)() 

С другой стороны, для более объектно-ориентированного подхода, создать интерфейс для завода:

Interface FooFactory 
    Function CreateFoo() As Foo 
End Interface 

И снова, добавьте их в словарь:

Dim factories = New Dictionary(Of String, FooFactory) 
factories.Add("abc", New FooFactory1) 
factories.Add("def", New FooFactory2) 

И затем вызвать его, как этот

Dim foo = factories(value).CreateFoo() 
Смежные вопросы