我正在开发一个具有 REST 端点的应用程序,对于 Get-By-ID 服务,我通过从持久存储中收集数据来填充资源(基本上是 POJO)。现在,在发回响应之前,我必须填充 POJO 资源中的 HREF。我想以通用的方式执行此操作,以便各种其他 REST 服务(搜索等)可以使用它。我想在一个共同的地方进行此 HREF 填充,以实现可重用性。简而言之,我的资源 POJO 可以通过各个按摩层来改变不同的状态,并最终发送回消费者。
Resource POJO --> Massager 1 --> Massager 2 --> Final Massaged POJO
有人可以帮我找出适合我的问题的设计模式吗?
我想到了装饰器模式,但不知怎的,它并没有让我的船航行。
~NN
最佳答案
你可以适应Chain Of Responsability满足您的需求。您可以处理 POJO,然后进一步传递,而不是使用一系列处理对象将 POJO 从一个对象传递到另一个对象(以防万一它无法处理它)。
abstract class Messager{
private Messager nextMessager;
void setNextMessager(Messager messager){
this.nextMessager = messager;
}
Messager getNextMessager(){
return this.nextMessager;
}
abstract void handle(Pojo pojo);
}
class FooMessager extends Messager{
void handle(Pojo pojo){
//operate on your pojo
if(pojo.getHref == null){
pojo.setHref("broken");
}
if(this.getNextMessager() != null){
this.getNextMessager().handle(pojo);
}
}
}
class BarMessager{
void handle(Pojo pojo){
//operate on your pojo
if(pojo.getHref().contains("broken")){
pojo.setHref(pojo.getHref().replace("broken","fixed"));
}
if(this.getNextMessager() != null){
this.getNextMessager().handle(pojo);
}
}
}
class Pojo{
private String href;
public Pojo() {
}
public String getHref() {
return href;
}
public void setHref(String href) {
this.href = href;
}
}
class Test{
public static void main(String[] args) {
Pojo pojo = new Pojo();
pojo.setHref(null);
Messager foo = new FooMessager();
Messager bar = new BarMessager();
foo.setNextMessager(bar);
foo.handle();
}
}
关于java - 什么样的设计模式适合这里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26135541/