Builder模式的用法

时间:2011-05-03 10:36:05

标签: java design-patterns

有人可以告诉我们必须如何使用构建器和命令模式吗? 以下代码可以是构建器模式吗?

public Customer(String name,double age,
     String account)
            throws SQLException {
        this.name = name;
        this.age = age;
        this.account = account;
        Customer.dao.create(this);
    }
public void setAccount(String account) {
        this.account = account;
    }
public void setName(String name) {
        this.name = name;
    }
public void setAge(double age) {
        this.age = age;
    }

2 个答案:

答案 0 :(得分:2)

您提供的代码既不是命令模式也不是构建器模式。它是一个JavaBean,它有一个带有副作用的构造函数,即它调用DAO。这似乎不是一个好主意。

当您有许多需要设置的实例变量时,Builder模式非常有用,其中一些变量不是必需的。它避免了巨大的构造函数和重载构造函数的需要。命令模式根本不适合您正在执行的操作 - 当您希望某些类型表示系统中的操作或任务时,可以使用命令模式。

答案 1 :(得分:0)

构建器模式抽象对象的构造。根据你的例子我建议遵循结构

public interface Builder {
   public Costumer buildCostumer(String name, double age, String account);
}

public class ConcreteBuilder implements Builder {

  public Costumer buildCostumer(String name, double age, String account) {
     return new Costumer(name, age, account);
  }

}

在您的应用程序中,它将按如下方式使用:

public class Application {

         public static void main(String[] args) {
              Builder builder = new ConcreteBuilder();
              Costumer c = builder.buildCostumer("Hugo Bosh", 37, "account");
              //do what you want with the costumer
         }


    }