Я надеюсь, что вы можете помочь мне с моей проблемой:
У меня есть класс, который делает мыльные звонки. Но если определение мыла изменится, мне придется написать новый класс или унаследовать его и т. Д.
Поэтому я пришел к решению написать что-то вроде этого:
switch(version)
{
case "1.0":
saopV1.getData()
case "2.0":
soapV2.getData()
}
Ну, довольно плохой код, я знаю. Затем я прочитал о паттерне «Стратегия» и подумал: «Вау, это то, что мне нужно, чтобы избавиться от этой плохой вещицы с переключателями»:
abstract SoapVersion
{
public SoapVersion GetSoapVersion(string version)
{
//Damn switch-case thing
//with return new SoapV1() and return new SoapV2()
}
public string[] virtual getData()
{
//Basic Implementation
}
}
class SoapV1:SoapVersion
{
public override string[] getData()
{
//Detail Implementation
}
}
class SoapV2:SoapVersion
{//the same like soapv1}
Но я не могу избежать использования "ifs" или переключать регистры в моем коде. Возможно ли это с помощью ОО-технологий ??
Edit:
Функция GetSoapVersion должна быть статической