【java设计模式】【创建模式Creational Pattern】建造模式Builder Pattern
2024-10-18 21:26:33
package com.tn.pattern; public class Client {
public static void main(String[] args) {
Director director=Director.getInstance();
director.construct(new ConcreteBuilder1());
director.construct(new ConcreteBuilder2());
}
} class Director{
static Director director;
private Director(){}
public static Director getInstance(){
if(director==null)
director=new Director();
return director;
}
public void construct(Builder builder){
builder.buildPart1();
builder.buildPart2();
}
} interface Builder{
void buildPart1();
void buildPart2();
Product retrieveResult();
} class ConcreteBuilder1 implements Builder{
Product product;
@Override
public void buildPart1() {
System.out.println("ConcreteBuilder1.buildPart1()");
product=new Product1();
} @Override
public void buildPart2() {} @Override
public Product retrieveResult() {
return product;
}
} class ConcreteBuilder2 implements Builder{
Product product;
@Override
public void buildPart1() {} @Override
public void buildPart2() {
System.out.println("ConcreteBuilder2.buildPart2()");
product=new Product2();
} @Override
public Product retrieveResult() {
return product;
}
} interface Product{} class Product1 implements Product{
public Product1(){
System.out.println("Product1.Product1()");
}
} class Product2 implements Product{
public Product2(){
System.out.println("Product2.Product2()");
}
}
最新文章
- Linux FHS
- openlayers方法总结
- Python操作文件文档
- Android学习--摘录
- 【Win10 UWP】QQ SDK(一):SDK基本使用方法
- sina发现并不会去导入qq使用的
- C程序设计语言--指针和引用的区别
- 编写程序,从vector<;char>;初始化string
- ElasticSearch的Marvel更新license
- python学习笔记 函数
- spring为什么推荐使用构造器注入?
- Git(使用码云)
- 解决github访问及上传慢的问题
- 多线程Task
- poi 创建excel数据
- Net::HTTP 一次添加 cookie, body 发送post请求
- 发布网站的时候发现360极速浏览器ie7内核不兼容样式的问题
- java第五天
- OpenStack高可用方案及配置
- 【Spark】编程实战之模拟SparkRPC原理实现自定义RPC