工厂设计模式的实施

时间:2017-06-21 00:37:51

标签: java rest oop design-patterns salesforce

我正在为我的客户开发一个小应用程序,我尝试应用Factory Method设计模式。我不确定我是否做得正确。

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

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

最后有一个ApiService类处理Rest Requests并使用SchemeFactory创建Schemes(使用请求体)。之后处理这些方案,如果需要,在某些时候创建特定的系统对象(使用方案)并插入到数据库中。

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

1 个答案:

答案 0 :(得分:0)

这个概念是正确的。

您的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
    }
}

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

public class FakeSchema extends AbstractSchema {

    public FakeSchema () {
        super(null);
    }

}