遇到多个构造器参数考虑用构建器(Builder)
如果一个对象带有多个参数,程序员一般采用重叠构造器模式。但是该方法的缺点是,如果参数很长,客户端代码不仅很难编写,同时可读性也很差。
第二种替代方案:Java Beans。类中提供一个无参构造方法和对属性的mutator方法。该方法的缺点是容易线程安全问题。
第三种方案就是Builder模式。该方案既保证了重叠构造器模式的安全性,又保证像JavaBeans模式那样好的可读性。
考虑一个例子,一款食物产品通常附属有营养标识,有必须的,也有可选的。比如脂肪,钠,碳水化合物,加路里等。
下面用Builder模式来构造一个营养标识类(NutritionFacts):
new AlertDialog.Builder(context).setTitle("提示").setMessage("网络连接未打开").setPositiveButton("前往打开",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog,int which) {Intent intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);startActivity(intent);}}).setNegativeButton("取消", null).create().show();