0

私はWCFが初めてで、ファクトリーデザインパターンが初めてです。この例では、ファクトリ デザイン パターンを実際にどのように実装しますか?

プロジェクトでadditionsubtraction、の4 つのクラスを作成したので、インターフェイスで計算を行う以外に、これらのクラスを呼び出して計算を実行する方法があれば、それは素晴らしいことです。multiplicationdivision

前もって感謝します。

[OperationContract]
int Calculation(int value1, int value2, string calType);

public class Service1 : IService1
{
   public int Calculation(int value1, int value2, string calType) 
   {
        try {
            switch (calType)
            {
                case "addition":
                    return value1 + value2;

                case "subtraction":
                    return value1 - value2;

                case "multiplication":
                    return value1 * value2;
                case "division":
                    return value1 / value2;
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

        return 0;
     }
  }
4

1 に答える 1

1

わかりましたこれをしましょう、wcfのファクトリーパターン

古典的な形状の例を取り上げます。ファクトリ パターンを実装することで、サービス クラスのコードを効果的に削減できます。

シェイプ ファクトリ クラスのみが WCF サービス クラスに必要であり、残りは独自のビジネス クラスを持つことができます

1) インターフェースを作成する

 public interface Shape {
 void  draw();
 }

2)このようなクラスを作成します

public class Rectangle : Shape {

 public void draw() {
 print("Inside Rectangle::draw() method.");
  }
  }

public class Square : Shape {

  public void draw() {
  print("Inside Square::draw() method.");
  }
  }

3) サービス ファクトリ クラスが作成されました

 [service contract]
  public class ShapeFactory {

 //use getShape method to get object of type shape 

  [operation contract]
  public Shape getShape(String shapeType){
  if(shapeType == null){
     return null;
  }     
  if(shapeType.equalsIgnoreCase("CIRCLE")){
     return new Circle();
  } else if(shapeType.equalsIgnoreCase("RECTANGLE")){
     return new Rectangle();
  } else if(shapeType.equalsIgnoreCase("SQUARE")){
     return new Square();
  }
  return null;
  }
  }

このメソッドをサービスのインターフェースで公開します

4)残りはクライアントに任せる

コードは一般的なアイデアを提供するためのものです

ファクトリ パターンは、wcf で優れた実装を行うことができます

于 2014-07-24T19:26:06.173 に答える