java 的builder模式——设计思想

本文介绍了一种解决构造复杂对象问题的设计模式——Builder模式。通过该模式,客户端可以通过简单的步骤构建具有多个必要参数及可选参数的不可变对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

如果类的构造器或者静态工厂中具有多个参数,设计这种类时,Builder模式就是不错的选择。

具体做法:

不直接生成想要的对象,而是让客户端利用所有必要的参数调用构造器,得到一个builder对象。然后客户端在builder对象上调用类似于setter的方法,来设置每一个相关的可选参数。最后,客户端调用无参的bulid方法来生成不可变的对象。

例子:

public class NutritionFacts{

private fianl int servingSize;

private final int servings;

private final int calories;

private final int sodium

    public static  class Builder{

      private final int servingSize;

      private final int serving;

     private int calories =0;

     private sodium =0;

    public Builder( int  servingSize,int serving){

       this.servingSize=servingSize;

       this.serving =serving;

     }

   public Builder calories(int val){

      calories=val;

   }

    public Builder sodium (int val){

      sodium=val;

   }

      public  NutritionFacts build(){

          return new NutrionFacts(this);

     }

   }

    private NutritionFacts(Builder builder){

      servingSize =builder.servingSize;

      serving =builder.serving;

     calories =builder.calories

    sodium =builder.sodium;

   }

}

1.大家思考的问题是:如何构建这个对象呢?

答案是:NurtionFacts cola =new NutrionFacts.Builder(240.8).calories(100).soidum(35).build();

2.大家思考的问题:这种设计模式与重叠构造器模式、javaBean模式的优势在哪里呢?

这里不赘述了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值