我设计了一个框架来公开一些基于休息的web服务。基类看起来像这样(不是确切的代码)
public interface WSService {
public void init(WSRequest request);
public List<String> validate();
public void performAction();
public WSResponse generateResponse();
}
每个新服务都实现此Web服务并实现其特定逻辑
public class WSOrders implements WSService {...}
然后,我实现了一个WSProcessor
,它接受特定的类,然后执行方法并执行错误检查/等。例如
@RestResource(GET, "/getorders")
public Response getOrders (...){
WSService getOrders = new WSOrders();
WSRequestProcessor processor = new WSRequestProcessor(restInput);
processor.process(getOrders);
}
在WSRequestProcessor
中,我使用流程方法首先从休息请求中提取输入,执行应用程序级别验证(某些标头验证等)。然后称这样的方法
public WSRequestProcessor{
...
public void process (WSService service){
service.init()
service.validate();
service.performAction();
service.generateResponse();
}
}
需要注意的是WSRequestProcessor
处理所有异常处理,一般错误响应创建等。
这种模式非常适合为我们公开任何资源。在一天结束时,为了公开任何资源,我必须(或任何开发人员)创建WS<ResourceName>
并在那里实现他们的业务逻辑。
答案 0 :(得分:1)
起初这似乎只是基本的多态,但我明白为什么你想知道是否有一种设计模式可以称之为。我首先要说这是松散的SOLID设计,然后说有一个基本形式的外观模式,用于设计getOrders方法,然后可能是一个Command模式。