应该使用哪种设计模式?

时间:2014-01-13 11:51:04

标签: java design-patterns

我实现了一些将文档存储在数据库中的功能。

现在,我想访问模块中的功能,但不是直接访问。

因为我有FileInputStream和我实现的功能接受JSON字符串。

那么,哪种设计模式可用于弥补输入参数的差距?

我知道适配器是答案之一,但任何人都可以提出其他建议吗?

以下是功能的示例。

public interface DocumentService {

    public String create(String jsonRequest);

    public String search(String jsonRequest);

    public String update(String jsonRequest);

    public String fetch(String jsonRequest);

}

4 个答案:

答案 0 :(得分:2)

阐明我的意见:

  1. 尝试将每一项功能融入一个明确的“模式”并不能充分利用你的时间。
  2. 即使是这样,试图找到你实际想出的完美“名字”也不是。
  3. 您需要一个将FIS转换为JSON的帮助程序类,这就是它。
  4. 您可以撰写使用该帮助程序和现有类的服务,或者......
  5. 将您现有的课程编入FIS => JSON转换器,或......
  6. 修改数据流,以便通过JSONifies过滤数据传递数据,或者......
  7. 换句话说,(a)“最佳”答案取决于你的具体情况,(b)它的名称并不重要。 某事,把它放在合理的中间位置,如果它最终不完全正确,则迭代直到它。不要浪费时间试图命名“模式”。

    这就像抛出和关节锁:不要找它们,找到它们。模式隐藏在您的应用程序中,表面并实现。

答案 1 :(得分:1)

只需制作私人转换方法

String toJSON(FileInputStream fs) {
   ...
}

如果您碰巧需要在多个位置使用该方法,请将其移至实用程序类中。

如果单个方法对于现在所需的每种情况都不够灵活,那么您应该考虑编写适配器类。

在许多程序员中,为每种功能设计完美,完美的架构的愿望是很自然的。它会使实际目标陷入瘫痪的风险,即实现工作产品。

良好设计的重要之处并不在于它能够满足将来可能出现的每一个可能的用例,而且如果用例实际到达,它很容易理解并且易于更改。

答案 2 :(得分:1)

看起来适配器是一个不错的选择。我会前进。

答案 3 :(得分:0)

为什么不使用DAO模式?

将输入流传递给DAO对象,并将其从文件输入流转换为JSON并调用create方法。

http://www.tutorialspoint.com/design_pattern/data_access_object_pattern.htm