我是WCF的新手,也是工厂设计模式的新手。在这个例子中,您如何实际实现工厂设计模式?
我在项目中创建了4个类addition
,subtraction
,multiplication
和division
,所以如果有办法调用这些类来执行除了在界面中进行计算会很棒。
提前致谢。
[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;
}
}
答案 0 :(得分:1)
好吧,让我们这样做,工厂模式在wcf
我们采用经典的形状示例,通过实现工厂模式,我们可以有效地减少服务类中的代码
只有形状工厂类需要在WCF服务类中,其余的可以有自己的业务类
1)创建一个界面
public interface Shape {
void draw();
}
2)创建像这样的类
public class Rectangle:Shape {
public void draw() {
print("Inside Rectangle::draw() method.");
}
}
公共类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中有很好的实现