黑马程序员技术交流社区
标题:
23种设计模式---建造者模式
[打印本页]
作者:
小麦芽
时间:
2017-4-1 16:36
标题:
23种设计模式---建造者模式
前三种模式也行大家都接触过,使用的也多,下面介绍一个建造者模式,如果用好这个模式,再加上链式编程
会让代码很优雅,很灵活,不过也稍微有点儿难度。
建造者模式也是创建型模式的一种,它用来隐藏符合对象的创建过程,把符合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有符合属性的对象。
//----------------------对话框实体类-------------------------------
public class Dialog {
private int Width;
private int height;
private String title;
private String content;
private String confirm;
private String cancel;
public int getWidth() {
return Width;
}
public void setWidth(int width) {
Width = width;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getConfirm() {
return confirm;
}
public void setConfirm(String confirm) {
this.confirm = confirm;
}
public String getCancel() {
return cancel;
}
public void setCancel(String cancel) {
this.cancel = cancel;
}
}
//---------------------抽象出对话框的功能---------------------------------------
public interface DialogDesign {
//对话框的高度
Dialog height(int height);
//对话框的宽度
Dialog width(int width);
//对话框的标题
Dialog title(String name);
//对话框中间的提示信息
Dialog content(String content);
//确定按钮
Dialog confirm(String text);
//取消按钮
Dialog cancel(String text);
//显示对话框
Dialog show();
}
//---------------对话框的建造者---------------------------------------------
public class DialogBuilder implements DialogDesign {
private Dialog mDialog = new Dialog();
@Override
public Dialog height(int height) {
mDialog.setHeight(height);
return mDialog;
}
@Override
public Dialog width(int width) {
mDialog.setWidth(width);
return mDialog;
}
@Override
public Dialog title(String name) {
mDialog.setTitle(name);
return mDialog;
}
@Override
public Dialog content(String content) {
mDialog.setContent(content);
return mDialog;
}
@Override
public Dialog confirm(String text) {
mDialog.setConfirm(text);
return mDialog;
}
@Override
public Dialog cancel(String text) {
mDialog.setCancel(text);
return mDialog;
}
public Dialog show(){
if(mDialog.getTitle() != null){
System.out.println(mDialog.getTitle());
}
if(mDialog.getContent() != null){
System.out.println(mDialog.getContent());
}
if(mDialog.getConfirm() != null){
System.out.println(mDialog.getConfirm());
}
if(mDialog.getCancel() != null){
System.out.println(mDialog.getCancel());
}
if(mDialog.getWidth() > 0){
System.out.println(mDialog.getWidth());
}
if(mDialog.getHeight() > 0){
System.out.println(mDialog.getHeight());
}
return mDialog;
}
}
//------------------对话框长什么样子的管理者-----------------------------------
//这个类其实也可以叫做
// 对话框管理者
// 对话框操作者
// 指挥创造者
public class DialogTemplate {
//建造简单的对话框
public static void simpleBuilder(DialogDesign builder){
builder.title("标题");
builder.content("您确定要执行吗?");
builder.confirm("确定按钮");
builder.show();
}
//建造标准的对话框
public static void standardBuilder(DialogDesign builder){
builder.width(100);
builder.height(100);
builder.title("标题");
builder.content("您确定要执行吗?");
builder.confirm("确定按钮");
builder.cancel("取消按钮");
builder.show();
}
//建造自定义的对话框
public static DialogDesign costomBuilder(DialogDesign builder){
builder.title("标题");
builder.content("您确定要执行吗?");
return builder;
}
}
//-----------------------对话框测试类----------------------------------------
public class BuilderTest {
public static void main(String[] args) {
DialogBuilder sBuilder = new DialogBuilder();
//对话框管理者生成对话框
DialogTemplate.simpleBuilder(sBuilder);
}
}
这个大家可以好好琢磨一下,有什么问题大家一起探讨!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2