gpt4 book ai didi

java - 什么设计模式适合这里?

转载 作者:行者123 更新时间:2023-11-30 06:17:08 26 4
gpt4 key购买 nike

我正在开发一个具有 REST 端点和 Get-By-ID 服务的应用程序,我正在通过从持久存储中收集数据来填充资源(基本上是 POJO)。现在,在发回响应之前,我必须在 POJO 资源中填充 HREF。我想以一种通用的方式进行,以便其他各种 REST 服务(搜索等)可以使用它。我想在一个共同的地方做这个 HREF 人口以实现可重用性目的。简而言之,我的资源 POJO 可以通过各种按摩层来改变不同的状态,最后发送回消费者。

    Resource POJO --> Massager 1 --> Massager 2 --> Final Massaged POJO

谁能帮我找出适合我的问题的设计模式。

我想到了 Decorator 模式,但不知何故它不适合我。

~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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com