私はあなたが私の問題で私を助けることができることを願っています:
私は石鹸の呼び出しをしているクラスを持っています。しかし、soapの定義が変更された場合は、新しいクラスを作成するか、そこから継承する必要があります。そこで、次のようなものを作成するソリューションにたどり着きました。
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」を使用したり、大文字と小文字を切り替えたりすることは避けられません。これはOO技術を使用して可能ですか?
編集:GetSoapVersion-関数は静的である必要があります