首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

JAVA设计形式之Builder

2012-09-13 
JAVA设计模式之Builder应用1:1. 代码: 在BroswerActivity.java中,有对WebViewClient的创建,代码如下:priva

JAVA设计模式之Builder

应用1:

1. 代码:

在BroswerActivity.java中,有对WebViewClient的创建,代码如下:

private final WebViewClient mWebViewClient = new WebViewClient() {

……

??????? /**

???????? * Displays SSL error(s) dialog to the user.

???????? */

??????? @Override

??????? public void onReceivedSslError(

??????????? final WebView view, final SslErrorHandler handler, final SslError error) {

??????????? ……

??????????? new AlertDialog.Builder(BrowserActivity.this)

??????????????????? .setTitle(R.string.security_warning)

??????????????????? .setIcon(android.R.drawable.ic_dialog_alert)

??????????????????? .setView(warningsView)

??????????????????? .setPositiveButton(R.string.ssl_continue,

??????????????????????????? new DialogInterface.OnClickListener() {

??????????????????????????????? public void onClick(DialogInterface dialog, int whichButton) {

??????????????????????????????????? handler.proceed();

??????????????????????????????? }

??????????????????????????? })

??????????????????? .setNeutralButton(R.string.view_certificate,

??????????????????????????? new DialogInterface.OnClickListener() {

??????????????????????????????? public void onClick(DialogInterface dialog, int whichButton) {

??????????????????????????????????? showSSLCertificateOnError(view, handler, error);

??????????????????????????????? }

??????????????????????????? })

??????????????????? .setNegativeButton(R.string.cancel,

??????????????????????????? new DialogInterface.OnClickListener() {

??????????????????????????????? public void onClick(DialogInterface dialog, int whichButton) {

??????????????????????????????????? handler.cancel();

??????????????????????????????????? BrowserActivity.this.resetTitleAndRevertLockIcon();

??????????????????????????????? }

??????????????????????????? })

??????????????????? .setOnCancelListener(

??????????????????????????? new DialogInterface.OnCancelListener() {

??????????????????????????????? public void onCancel(DialogInterface dialog) {

??????????????????????????????????? handler.cancel();

??????????????????????????????????? BrowserActivity.this.resetTitleAndRevertLockIcon();

??????????????????????????????? }

??????????????????????????? })

??????????????????? .show();

?????????????????? ……

2. 分析:

(1)功能:正如注释中所示,创建一个error dialog并显示

(2)模式说明: 这里,使用了简化的builder模式,将抽象建造者省略,只使用一个具体建造者,并且将指导者角色也省略了。 AlertDialog.Builder就是具体建造者,另外,它是以匿名类的方式被创建的,而且,Builder类是AlertDialog的内部类,这样,耦合性比较低,这正是面向对象中要达到的设计意图之一。 最后调用show函数,它的返回类型正是我们要创建的产品,即AlertDialog。 所以,Builder(具体建造者)是AlertDialog(产品)的内部匿名类,用来创建并显示一个dialog。

(3)启示: 我们完全可以对builder模式进行简化,将抽象建造者甚至指导者角色省略。 具体创建者和产品之间可以用内部类来实现,以达到低耦合的目的。

应用2:StringBuilder,StringBuffer


1. 代码:

public class DefaultHttpClientConnection extends SocketHttpClientConnection {
……
??? public String toString() {
??????? StringBuffer buffer = new StringBuffer();
??????? buffer.append("[");
??????? if (isOpen()) {
??????????? buffer.append(getRemotePort());
??????? } else {
??????????? buffer.append("closed");
??????? }
??????? buffer.append("]");
??????? return buffer.toString();
}
}
2.分析:
?? (1)功能:StringBuffer和StringBuilder是包含在java.lang包中的,在android中的实现和标准java2的实现不一样,如下:


?? (2)模式说明:
? 这里,使用了简化的builder模式,将指导者角色省略。
? builder模式被用于实现DefaultHttpClientConnection的成员函数toString。
? 最后的return buffer.toString()其实返回的就是产品String。
?? (3)启示:
? 完全可以用builder模式去实现一个类的成员函数。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liranke/archive/2010/04/27/5535689.aspx

热点排行