如何用这个例子在WCF中实现工厂设计模式
本文关键字:实现 工厂 设计模式 WCF 何用这 | 更新日期: 2023-09-27 17:58:29
我是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;
}
}
好吧,让我们这样做,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 中有很好的实现