java 设计模式学习笔记三 Builder模式

设计模式  builder


将一个复杂的对象构建与他的表示分离,使同样的构建过程可以创建不同的表示
把创建和部件的创建分别开来




示例代码:
 /**
 * 部件实体
 * 
 * @time 下午11:03:52
 * @author retacn yue
 * @Email zhenhuayue@sina.com
 */
public interface Part {}




/**
 * 成品
 * 
 * @time 下午11:05:14
 * @author retacn yue
 * @Email zhenhuayue@sina.com
 */
public class Product {
public String name = "xxxx";
}




/**
 * 创建各个部件和复杂对象的接口
 * 
 * @time 下午10:56:16
 * @author retacn yue
 * @Email zhenhuayue@sina.com
 */
public interface Builder {
// 创建部件A
void buildPartA();


// 创建部件B
void buildPartB();


// 创建部件C
void buildPartC();


// 返回最后组装成品结果
Product getResult();


// 设置成品结果
void setResult(String str);
}




/**
 * 创建各部件的具体实现
 * 
 * @time 下午11:02:59
 * @author retacn yue
 * @Email zhenhuayue@sina.com
 */
public class CreateBuilder implements Builder {
Part partA, partB, partC;
String str;


/************* 完成各部件的组装 *********************/
@Override
public void buildPartA() {
System.out.println("组装部件a");
}


@Override
public void buildPartB() {
System.out.println("组装部件b");
}


@Override
public void buildPartC() {
System.out.println("组装部件c");


}


/***************************************/
/**
* 返回组装成品结果
*/
@Override
public Product getResult() {
Product product = new Product();
product.name = str;
return product;
}


/**
* 设置成品结果F
*/
@Override
public void setResult(String str) {
this.str = str;
}
}






/**
 * 创建复杂对象
 * 
 * @time 下午10:59:41
 * @author retacn yue
 * @Email zhenhuayue@sina.com
 */
public class Director {
Builder builder;


/**
* 构造器

* @param builder
*/
public Director(Builder builder) {
this.builder = builder;
}


// 组装成品的过程
public void construct() {
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();
}
}






/**
 * 创建复杂对象
 * 
 * @time 下午10:59:41
 * @author retacn yue
 * @Email zhenhuayue@sina.com
 */
public class Director {
Builder builder;


/**
* 构造器

* @param builder
*/
public Director(Builder builder) {
this.builder = builder;
}


// 组装成品的过程
public void construct() {
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();
//设置组装结果
builder.setResult("success");
}
}






/**
 * 测试调用builder模式
 * 
 * @time 下午11:08:15
 * @author retacn yue
 * @Email zhenhuayue@sina.com
 */
public class TestBuilder {


public class TestBuilder {
 
public static void main(String[] args) {
// 创建各部件的具体实现
CreateBuilder builder = new CreateBuilder();
// 创建复杂对象
Director director = new Director(builder);
// 组装成品
director.construct();
// 取得成品结果
Product product = builder.getResult();
System.out.println("组装成品" + product.name);
}
}
}


应用场景:”池“使资源得到循环利用,如上面实例,可以修改director类检查问题


出在哪个部件,然后修复这个部件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值