如何用这个例子在WCF中实现工厂设计模式

本文关键字:实现 工厂 设计模式 WCF 何用这 | 更新日期: 2023-09-27 17:58:29

我是WCF的新手,也是工厂设计模式的新手。在这个例子中,你是如何实际实现工厂设计模式的?

我在项目中创建了4个类additionsubtractionmultiplicationdivision,所以如果有一种方法可以调用这些类来执行计算,而不是在接口中进行计算,那就太好了。

提前谢谢。

[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;
     }
  }

如何用这个例子在WCF中实现工厂设计模式

好吧,让我们这样做,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 中有很好的实现