java设计模式学习—生成器(Builder)

意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程能生成不同的表示(实例)。
类型:对象创建型;
组成:
Builder接口:为创建一个Product对象的各个部件指定接口;
Builder接口实现:实现Builder接口以构建和装配Product的各个组件;
Product:被构造的复杂对象;
Director:使用Builder接口的对象;

/*Builder接口*/
public interface Builder{
   public Product pro();
   public void setPro();
}
/*Builder接口实现了*/
public class BuilderImp implements Builder{
    private Product product = new Product();
    public Product pro(){
        return product;
    }
    public void setPro(){
        product.setName()
        product.setType();
    }
}
/*Product产品类*/
public class Product{
   public void setName(){
   }
   public void setType(){
   }
}
/*Builder调用者*/
public class  Director{
   private Builder = new BuilderImp();
   public Product getPro(){
      builder.setPro();
      return builder.pro();
   }
}
public class Client{
   public static void  main(Stirng[] args){
       Director direct = new Director();
       Product product = direct.getPro();
   }
}
FreeBuilderJava 1.6  自动生成 Builder 模式。当设计类的构造函数或静态工厂具有多个参数时,Builder 模式是一个不错的选择。—— Effective Java,第二版,第39页背景在 Java 中实现 Builder 模式容易出错和重复。即使是一个简单的四字段类,最基本的构建器 API 需要 39 行代码,如果你不使用像 AutoValue 这样的实用程序来生成值样板,则需要 72 行代码。使用import org.inferred.freebuilder.FreeBuilder; @FreeBuilder public interface Person {   /** Returns the person's full (English) name. */   String name();   /** Returns the person's age in years, rounded down. */   int age();   /** Builder of {@link Person} instances. */   class Builder extends Person_Builder { } }JavaBean convention如果值类型遵循 JavaBean 命名约定,只需在访问器方法前面加上'get'(或者,布尔访问器是'is')。 FreeBuilder 会跟随,并在 setter 方法上添加“set”前缀,以及从 toString 输出中删除前缀。@FreeBuilder public interface Person {   /** Returns the person's full (English) name. */   String getName();   /** Returns the person's age in years, rounded down. */   int getAge();   /** Builder of {@link Person} instances. */   class Builder extends Person_Builder { } } Person person = new Person.Builder()     .setName("Phil")     .setAge(31)     .build(); System.out.println(person);  // Person{name=Phil, age=31} 标签:FreeBuilder
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值