【发布时间】:2012-02-09 13:19:31
【问题描述】:
在我的公司,我们有一个基于这种模式的项目。我想知道这是一种现有的和公认的设计模式,还是各种模式的组合,或者只是解决问题的一种方便的编码解决方案。
interface IService <TRequest, TResponse>
where TRequest : IRequest, TResponse : IResponse
{
TResponse ProcessRequest(TRequest request);
}
public class ConcreteService : IService<ConcreteRequest, ConcreteResponse>
{
public ConcreteResponse ProcessRequest(ConcreteRequest request)
{
// Do some stuff to create the ConcreteResponse object
}
}
然后在 Web 服务操作中:
[WebMethod]
public ConcreteResponse SomeService(ConcreteRequest request)
{
// Do some validations...
// And then...
var service = new ConcreteService();
return service.ProcessRequest(request);
}
注意:我见过其他现实世界的项目采用了类似的方法。
【问题讨论】:
-
我看到了一些继承和泛型,但我不知道你可能在想什么模式。
-
没有实际代码或解释它应该做什么,这看起来很像古老的“过度工程”模式。
-
@larsmans - 我怀疑这种方法更多地与为外部客户端提供一定程度的版本容错有关。
-
@larsmans 它在 Web 服务项目中用于为用户提出的任何请求创建适当的响应。我们有一个从 IService 继承的类,用于 Web 服务中的每个 Web 方法(20 多个 Web 方法),并且这样做是为了保持 Web 服务之外的逻辑。
标签: .net oop design-patterns