0

我是 WCF 新手,也是工厂设计模式的新手。在此示例中,您如何实际实现工厂设计模式?

我在项目中创建了 4 个类addition,和subtraction,所以如果有一种方法可以调用这些类来执行计算,而不是在界面中进行计算,那就太好了。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 void draw() {
 print("Inside Rectangle::draw() method.");
  }
  }

公共类广场:形状{

  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 回答