java - 工厂设计模式的实现

标签 java rest oop design-patterns salesforce

我正在为我的客户开发一个小型应用程序,我尝试在那里应用工厂方法设计模式。我不确定我是否做得正确。

基本上我有一个抽象类Scheme,它由具体Scheme(AccountScheme、ContactScheme、OrderScheme 等)扩展。每个类主要由实例变量和一个负责将Scheme转换为实际系统对象的方法组成(最终将使用AccountScheme创建Account,ContactScheme创建Contact等)。

我还有一个SchemeFactory类,它有一个静态方法createScheme,它接受两个参数——Scheme应该能够转换为AND JSON字符串的系统对象类型,该字符串将被解析为Scheme对象本身。

最后有一个 ApiService 类,它处理 Rest 请求并使用SchemeFactory 创建Schemes(使用请求正文)。之后对方案进行处理,并且在某些时候,如果需要,将创建特定的系统对象(使用方案)并将其插入数据库。

我相信 UML 图(这是我的第一个)看起来像这样: UML Diagram

最佳答案

这个概念是正确的。

你的UML没有显示抽象类。在你的情况下,你可以有这样的东西(如 UML 中描述的):

class SchemaFactory
{
  public static Schema getSchema(String type, String json)
  {
    if ( type.equals("account") )
      return new AccountSchema(json);
    else if ( type.equals("contact") )
      return new ContactSchema(json);
    else if ( type.equals("order") )
      return new OrderSchema(json);

    throw new IllegalArgumentException();
  }
}

界面:

interface Schema {

}

AccountSchema的实现:

class AccountSchema implements Schema {
    AccountSchema(String json) {
        //use json
    }
}

抽象类对于该模式是可选的。如果您想强制模式使用 json 作为参数填充抽象类的构造函数,那么它很有用,但模式类仍然可以伪造,例如:

public class FakeSchema extends AbstractSchema {

    public FakeSchema () {
        super(null);
    }

}

关于java - 工厂设计模式的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44665082/

相关文章:

angularjs - 在网页中提供 REST-API 数据而不暴露 API 端点

c++ - 为什么委托(delegate)或闭包通常被称为 true "object-oriented function pointers"?

java - 为java中的对象分配相同的值

rest - 使用 Spark(Databricks) 的并行 REST API 请求

java - 需要表格格式的 Json 结果

java - 带有(太多)复杂对象的 Restful 架构问题

c++ - C++中的构造函数中的枚举

c++ - 场景图更新回调设计

java - Android 上的 Tagsoup 和 XOM

java - 存储库到服务的依赖关系未得到满足