建议选择合适的设计模式

时间:2019-03-01 19:32:49

标签: java design-patterns decoupling

我被要求提供a "deal service" that de-couples the user’s requests from the requests to the partners who provide rental rates. the service does so, by looking up a cache, and fetching whatever is missing in a long-running process.的设计文档

我正在考虑哪种设计模式适合该软件。我不需要编写工作代码,只需编写设计文档。

我正在考虑中介程序和Flyweight设计模式的结合。

介体模式定义一个对象,该对象封装了一组对象之间的交互方式。介体通过防止对象之间显式地相互引用来促进松散耦合,并且它使您可以独立地更改它们之间的交互。对象不直接彼此交互,而是要求中介程序代表它们交互,这导致可重用性和松散耦合。

另一方面,Flyweight模式旨在控制对象的创建,在这些对象中,应用程序中的对象具有高度相似性且属于相似种类,并为您提供了基本的缓存机制。它允许您为每种类型创建一个对象(此处的类型因该对象的属性而异),并且如果您请求具有相同属性(已创建)的对象,它将返回您相同的对象,而不是创建新的对象一个。

您有更好的建议吗?

1 个答案:

答案 0 :(得分:1)

听起来更像流程的编排。我将简单地构造VO并将其传递给协调器,然后在这里,我将使用命令模式(如果需要,还可以使用Abstract工厂),其中每个命令都有责任调用合作伙伴服务并返回DealsVO / TO / DTO(无论如何就是这样!)。我还将使用构建器模式来构建您对每个合作伙伴服务的请求,从而使所有设置者都脱离图片,使请求不可变。