Builder 模式的目的是将一个复杂对象的构建与它的表示分离,用同样的构建过程可以创建不同的表示。
什么情况下可以使用Builder模式:
1. 当创建复杂对象的算法应该独立于该对象的组成部分。
2. 当同样的构建过程允许被不同的对象有不同的表示时。
这种模式在android 中也大量使用,基本都是作为内部类使用。
比如创建通知:
Notification.Builder builder = new Notification.Builder(mContext)
.setContentIntent(createContentIntent(printJob.getId()))
.setSmallIcon(computeNotificationIcon(printJob))
.setContentTitle(computeNotificationTitle(printJob))
.addAction(R.drawable.stat_notify_cancelling, mContext.getString(R.string.cancel),
createCancelIntent(printJob))
.setContentText(printJob.getPrinterName())
.setWhen(System.currentTimeMillis())
.setOngoing(true)
.setShowWhen(true)
.setColor(mContext.getResources().getColor(
com.android.internal.R.color.system_notification_accent_color));
mNotificationManager.notify(0, builder.build());
比如创建提示框:
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle(android.R.string.dialog_alert_title)
.setMessage(getContext().getString(
R.string.tts_engine_security_warning, mEngineInfo.label))
.setCancelable(true)
.setPositiveButton(android.R.string.ok, positiveOnClickListener)
.setNegativeButton(android.R.string.cancel, negativeOnClickListener);
AlertDialog dialog = builder.create();
dialog.show();