繁体   English   中英

哪种设计模式合适?

[英]What design pattern is appropriate here?

我正在开发一个具有REST终结点的应用程序,并且对于Get-By-ID服务,我正在通过从持久性存储中收集数据来填充资源(基本上是POJO)。 现在,在发送回响应之前,我必须在POJO资源中填充HREF。 我想以一种通用的方式进行操作,以便其他各种REST服务(搜索等)都可以使用它。 我想在一个公共场所进行此HREF填充,以实现可重用性。 简而言之,我的资源POJO可以经过各种按摩层以改变不同的状态,并最终发送回给消费者。

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

有人可以帮助我找出适合我的问题的设计模式。

我想到了Decorator模式,但不知何故它无法航行。

〜NN

您可以根据自己的需要调整责任链 您可以处理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();
     }
}

即使前面的答案是好的并且确实可以解决问题,但如果您想走得更远的话,我想向您提出其他建议。 对象之间的通信非常普遍,因此存在许多概念,您可以选择最适合您的需求的概念。

命令模式可以帮助您将请求封装为对象

从持久性存储中收集数据

它将允许您使用队列或日志请求参数化客户端。

介体模式可以定义您在Massager 1 --> Massager 2类之间的通信。 通过这样做,它将封装您的对象交互。 此外,它还通过防止对象之间显式地相互引用来促进松散耦合,并使您可以独立地更改它们之间的交互。

如果您要处理如何通知对Massager 1 --> Massager 2更改Massager 1 --> Massager 2

我的资源POJO可以经过各种按摩层以具有不同的状态

观察者模式可以定义对象之间的依赖关系,因此当一个对象更改状态时,其所有依赖关系都会得到通知并自动更新。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM