EffectiveJava学习笔记1:创建销毁对象章-javaBean模式、静态工厂方法、构建器(Builder)

无论是构造器(可以使用javaBean模式)、构建器、静态工厂方法,都是为创建类的对象而存在的

1.构造器(javaBean模式)

构造器不用多说了

public class xx{
     public xx(){...}
     public xx(int x){...}
}

JavaBean模式就是现实使用无参构造器创建对象,通过get、set方法(主要通过setter方法设置参数)

public class MyjavaBean{
     private int number=0;
     public MyjavaBean(){}
     public void setNumber(int val){number=val;}
}
MyjavaBean myjavabean=new MyjavaBean();
myjavabean.setNumber(100);

优点:无需参数全部都设值,参数都可变

缺点:类无法设成不可变,构造过程中由于javabean参数不同可能导致调用方法出错

2.静态工厂方法

类提供一个公有的静态工厂方法来返回类的实例

class Test{
   private int number;
   public static Test newInstance(int number1){
       Test test=new Test();
       test.number=number1;
       return test;
   }
}

优点:适合数据构造都是私有的,只通过静态工厂方法来访问控制实例

缺点:构造器无法子类化

3.构建器(Builder)

结合javabean和重叠构造器的优点,有不可变可能、也有javabean的可变设置

public class Test{
   private final int a;
   private final int b;
   private final int c;
   private final int d;
   public static class Builder{
      private final int a;//必要(不可变)
      private final int b;
      private int c;//可变
      private int d;
      public Builder(int a,int b){
         this.a=a;
         this.b=b;
      }
      public Builder c(int val){c=val; return this; }
      public Builder d(int val){d=val; return this; }
      public Test build(){
         return new Test(this);
      }
   }
   private Test(Builder builder){
      a=builder.a;
      b=builder.b;
      c=builder.c;
      d=builder.d;
   }
}
int aa=1,bb=1,cc=1,dd=1;
Test test=new Test.Builder(aa,bb).c(cc).d(dd).build();

构建器适用于多参数,由于该模式下代码其实较为冗长,不适合简单的,反而比较适合较为复杂,同时参数较多的(一般四个以上)情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值