Spring框架学习第二节:Java设计模式(五)

此博客用于个人学习,来源于ssm框架的书籍,对知识点进行一个整理。

2.5 建造者(Builder)模式

2.5.1 概述

建造者模式属于对象的创建模式,可以将一个产品的内部表象(属性)与产品的生成过程分割开,从而使一个建造过程生成具有不同的内部表象的产品对象。

上一小节说过,可以通过工厂模式构建种类较多的对象,方便管理,但有些对象却比较复杂,比如一份旅游的套票可以分为:普通成年人,退休老人,半票有座小孩,免费无座小孩,军人及其家属等,它们都有不同的规定和优惠。如果通过 new 或者是工厂模式来创建对象会造成不便,因为所需的参数太多,对象也比较复杂。

为了处理这个问题,Builder 模式就出现了。Builer 模式是一种分布构建对象的模式,以刚才的旅游套票为例:

  • 第1步,构建普通成年票;
  • 第2步,构建退休老人票;
  • 第3步,构建有座儿童票;
  • 第4步,构建无座儿童票;
  • 第5步,构建军人及其家属票。

此时,需要用一个配置类对这些步骤进行统筹,然后将所有的信息交给构建器来完成构建对象,如图所示:
在这里插入图片描述
由配置类一次性构建一种票,步步推进,当所有的票已经构建结束,我们会通过构建器来构建套票对象。

2.5.2 Builder 模式实例

首先,创建一个 TicketHelper 对象,它是一个配置类,能帮我们一步步完成构建对象。

public class TicketHelper{
	public void buildAdult(String info){
		System.out.println("构建成人票逻辑"+info);
	}

	public void buildChildrenForSeat(String info){
		System.out.println("构建有座儿童票逻辑"+info);
	}

	public void buildChildrenNoSeat(String info){
		System.out.println("构建无座儿童票逻辑"+info);
	}

	public void buildElderly(String info){
		System.out.println("构建老年人票逻辑"+info);
	}

	public void buildSoldier(String info){
		System.out.println("构建军人及其家属票逻辑"+info);
	}
}

然后,需要一个构建类—— TicketBuilder ,如下面所示:

public class TickerBuilder{
	public static Object builder(TickerHelper helper){
		System.out.println("通过 TicketHelper 构建套票信息");
		return null;
	}
}

显而易见,Builder 的方法很简单,只需要一个配置类的参数,通过它就可以得到所有套票的信息,从而创建套票对象。

TickectHelper helper = new TicketHelper();
helper.buildAdult("成人票");
helper.buildChildrenForSeat("有座儿童票");
helper.buildChildrenNoSeat("无座儿童票");
helper.buildElderly("老年票");
helper.buildSoldier("军人及其家属票");
Object ticket = TicketBuilder.builder(helper);

通过这个建造者模式的简单实例,我们可以看出,内部的核心就是,通过一步步构建信息,把一个复杂的对线构建出来。

猜你喜欢

转载自blog.csdn.net/paynmind/article/details/106788005