Java中建造者(Builder)设计

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/50750542 Java中建造者(Builder)设计1Builder模式的定义将一个复杂的对象的构建与他的表示分离,使的同样的构建过程可以构建不同的表示。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/50750542

Java中建造者(Builder)设计

1Builder模式的定义

将一个复杂的对象的构建与他的表示分离,使的同样的构建过程可以构建不同的表示。

2Builder模式的使用场景

(1)相同的方法,不同的执行顺序,产生不同的事件结果。
(2)多个部件都可以装配到一个对象中,但是产生的运行结果又不相同。
(3)产品类非常复杂,或者产品类中调用顺序不同产生不同的作用,这时候使用建造者模式非常是适合。
(4)当初始化一个复杂的对象,如好多参数,且很多参数都具有默认值。

3Builder模式的UML图

Product产品类---产品的抽象
Builder--抽象的Builder,规范产品的组件,一般是由子类实现具体的组件过程。
ConcreateBuilder --具体的Builder类
Director--统一的组件过程。



代码的实现

package builder;
/**
 * 抽象deBuilder
 * @author lidong
 *
 */
public abstract class Builder {
    /**
     * 设置主机
     * @param board
     */
	public abstract void buildBorad(String board);
	/**
	 * 设置显示器
	 * @param display
	 */
	public abstract void buildDisplay(String display);
	/**
	 * 设置操作系统
	 */
	public abstract void buildOS();
	/**
	 * 创建机器
	 * @return
	 */
	public abstract Computer create();
	
	
}

package builder;
/**
 * 计算机抽象类
 * Product角色
 * @author Administrator
 *
 */
public abstract class Computer {


	protected String  mBoard;//主板
	protected String  mDisplay;//显示器
	protected String  mOS;//系统
	
	protected Computer() {
		
	}


	public String getmBoard() {
		return mBoard;
	}


	public void setmBoard(String mBoard) {
		this.mBoard = mBoard;
	}


	public String getmDisplay() {
		return mDisplay;
	}


	public void setmDisplay(String mDisplay) {
		this.mDisplay = mDisplay;
	}
	//抽象方法
	public abstract void setOS();


	@Override
	public String toString() {
		return "Computer [mBoard=" + mBoard + ", mDisplay=" + mDisplay
				+ ", mOS=" + mOS + "]";
	}
	
	
	
}

package builder;
/**
 * 具体的builder类,Window电脑
 * @author lidong
 *
 */
public class WindowBuilder extends Builder {
	
	private Computer mComputer = new  WindowPC();

	@Override
	public void buildBorad(String board) {
		mComputer.setmBoard(board);
		
	}

	@Override
	public void buildDisplay(String display) {
		mComputer.setmDisplay(display);
		
	}

	@Override
	public void buildOS() {
		mComputer.setOS();
	}

	@Override
	public Computer create() {
		return mComputer;
	}

}

package builder;
/**
 * window 电脑
 * @author lidong
 *
 */
public class WindowPC extends Computer{


	protected WindowPC() {
		super();
	}


	@Override
	public void setOS() {
		mOS = "window 7";
		
	}


}

package builder;
/**
 * Director  负责构建Compurter
 * @author lidong
 *
 */
public class Dirctor {
	
	Builder mBuilder = null;

	public Dirctor(Builder mBuilder) {
		super();
		this.mBuilder = mBuilder;
	}
	/**
	 * 构建对象
	 * @param borad
	 * @param display
	 */
	public void construct(String borad,String display) {
      mBuilder.buildBorad(borad);
      mBuilder.buildDisplay(display);
      mBuilder.buildOS();
	}

}

测试类:
package builder;

public class Test {

	public static void main(String[] args) {
    
		//构造器
		Builder builder1 = new WindowBuilder();
		Dirctor pcDirctor1 = new  Dirctor(builder1);
		pcDirctor1.construct("英特尔2", "1G显卡");
		System.out.println("Computer  info ="+builder1.create().toString());
	}
	
	
}

代码下载地址:
https://github.com/lidong1665/JAVA_DESIGN_PATTERNS/tree/master/JAVA_DESIGN_PATTERNS
相关文章
|
6月前
|
设计模式 安全 Java
构建未来应用:Java设计模式 - 建造者模式(Builder)在现代编程中的应用
【4月更文挑战第7天】建造者模式是提升代码质量的关键,尤其在复杂环境中。它分步骤构建对象,将构建与表示分离,适用于UI构建、数据模型组装、配置文件解析和网络请求构造等场景。最佳实践包括明确构建步骤、提供默认值、支持链式调用和确保线程安全。然而,过多步骤、不一致状态和性能问题是使用时需注意的问题。掌握建造者模式对于现代编程至关重要。
84 3
|
设计模式 缓存 Java
【设计模式——学习笔记】23种设计模式——建造者模式Builder(原理讲解+应用场景介绍+案例介绍+Java代码实现)
【设计模式——学习笔记】23种设计模式——建造者模式Builder(原理讲解+应用场景介绍+案例介绍+Java代码实现)
128 0
|
5天前
|
Java 网络安全 Maven
Exception in thread "main" java.lang.NoSuchMethodError: okhttp3.OkHttpClient$Builder.sslSocketFactory(Ljavax/net/ssl/SSLSocketFactory;Ljavax/net/ssl/X509TrustManager;)Lokhttp3/OkHttpClient$Builder; 问题处理
【10月更文挑战第26天】Exception in thread "main" java.lang.NoSuchMethodError: okhttp3.OkHttpClient$Builder.sslSocketFactory(Ljavax/net/ssl/SSLSocketFactory;Ljavax/net/ssl/X509TrustManager;)Lokhttp3/OkHttpClient$Builder; 问题处理
29 2
|
6月前
|
设计模式 算法 Java
【设计模式】JAVA Design Patterns——Builder(构造器模式)
【设计模式】JAVA Design Patterns——Builder(构造器模式)
|
Java
一看就会的java8通用Builder
一看就会的java8通用Builder
88 0
|
设计模式 Java
Java建造者模式(Builder Pattern)
Java建造者模式(Builder Pattern)
Java中builder的使用
Java中builder的使用
328 0
|
设计模式 算法 Java
Java设计模式-建造者模式(Builder)
Java设计模式-建造者模式(Builder)
|
JSON Dubbo Cloud Native
Triple 协议支持 Java 异常回传的设计与实现
通过对 Dubbo 3.0 新增自定义异常的版本迭代中可以看出,尽管只能新增一个小小的特性,流程下并不复杂,但由于要考虑互通、兼容和协议的设计理念,因此思考和讨论的时间可能比写代码的时间更多。
Triple 协议支持 Java 异常回传的设计与实现
|
存储 SQL 设计模式
Java设计本地缓存
Java设计本地缓存
Java设计本地缓存