设计模式05_创建者模式

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/46489147

创建者模式:将一个复杂对象的构建和其表示分离开来,使得同样的构建过程可以创建出不同的表示。

例如我们需要盖一栋楼房,需要工人来砌墙,需要设计师来设计房子怎么盖,而这里的设计师本身是不干活的,它只是负责下命令让工人干活就行,而真正的创建者是工人,他们最后把楼房盖起来的。所以,最后是向民工要房子而不是向设计师要房子。在这里,房主(客户端)只需要请工人(new Builder())和设计师(new Desinger()),并让设计师指挥工人干活(order2design()),最后房主向工人要房子(getRoom2Clinet())。

详情请见下方代码,希望对你有所帮助。感兴趣可以在我的GitHub上下载源码:https://github.com/pistolove

构建者接口,负责具体构建的事物:

<span style="font-size:14px;">package com.design.builder;

//构建者接口,负责构建什么
public interface IBulider {

	public void makeDoor();

	public void makeWindow();

	public void makeFloor();

	public void makeWall();

	public Room getRoom2Clinet();
}
</span>

具体的构建者,依据设计进行构建:

<span style="font-size:14px;">package com.design.builder;

//工人负责构建房子
public class ConcreateBuilder implements IBulider {

	private String door = null;

	private String window = null;

	private String floor = null;

	private String wall = null;

	@Override
	public void makeDoor() {
		// TODO Auto-generated method stub
		System.err.println("start makedoor");
		door = "door is ok ";
	}

	@Override
	public void makeWindow() {
		// TODO Auto-generated method stub
		System.err.println("start makeWindow");
		window = "window is ok ";
	}

	@Override
	public void makeFloor() {
		// TODO Auto-generated method stub
		System.err.println("start makeFloor");
		floor = "floor is ok ";
	}

	@Override
	public void makeWall() {
		// TODO Auto-generated method stub
		System.err.println("start makeWall");
		wall = "wall is ok";
	}

	@Override
	public Room getRoom2Clinet() {
		if (door != null && window != null && floor != null && wall != null) {
			return new Room(door, window, floor, wall);
		}
		return null;
	}
}
</span>

设计师指导工人构建:

<span style="font-size:14px;">package com.design.builder;

//设计师知道房子怎么做,但是自己不会做,他指挥工人去做
public class Desinger {
	private IBulider bulider;

	public Desinger(IBulider bulider) {
		this.bulider = bulider;
	}

	public void order2design() {
		bulider.makeDoor();
		bulider.makeFloor();
		bulider.makeWall();
		bulider.makeWindow();
	}
}
</span>

客户端测试:

<span style="font-size:14px;">package com.design.builder;

//房主来收房
public class Client {

	public static void main(String[] args) {

		IBulider bulider = new ConcreateBuilder();

		Desinger desinger = new Desinger(bulider);

		desinger.order2design();

		bulider.getRoom2Clinet();
	}
}
</span>

测试结果:

start makedoor

start makeFloor

start makeWall

start makeWindow

The room is create Ok. It contanins door is ok window is ok floor is ok wall is ok

时间: 2024-12-09 13:45:03

设计模式05_创建者模式的相关文章

五分钟一个设计模式之创建者模式

五分钟一个设计模式,用最简单的方法来描述设计模式. 认识创建者模式 创建者模式(又叫生成器模式)是为创建一个产品而生的,这个产品的组装算法是确定的,但零部件可以分配给多个厂商生产.使用创建者模式来创建产品,可以把产品零部件的生产和组装分开了. 创建者模式包含以下几个部分: 产品(Product) 厂商的接口(Builder) 具体的厂商(ConcreteBuilder1.ConcreteBuilder2.-ConcreteBuilderN),实现厂商接口,负责产品零部件的生产工作 指导者(Dir

Java 设计模式:创建者模式

1.什么是创建者模式 创建者模式(Builder)是将一个复杂的对象的构建和他的表示分离,使得同样的构建过程可以创建不同的表示.比如就建造房子为例,现实生活中房子的样子是各种各样的,而且每座房子内的格局.大小等等都不一样,但是建造房子的流程基本都是一样的.创建者模式就是创建的流程保持不变,但是流程中每一步的细节是可以变化的,从而创建出不同的产品. 创建者模式中包括以下几个角色 (1).Builder 抽象建造者类,规定了产品的各个组成部分,并声明获取建造完成后产品的抽象方法. (2).Concr

[设计模式] 4 创建者模式 builder

转载http://blog.csdn.net/wuzhekai1985/article/details/6667467 建造者模式的定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示(DP).<大话设计模式>举了一个很好的例子——建造小人,一共需建造6个部分,头部.身体.左右手.左右脚.与工厂模式不同,建造者模式是在导向者的控制下一步一步构造产品的.建造小人就是在控制下一步步构造出来的.创建者模式可以能更精细的控制构建过程,从而能更精细的控制所得产品的内部结构.下面给

C#设计模式之五创建者模式(Builder)【创建型】

一.引言 今天我们要讲讲Builder模式,也就是建造者模式,当然也有叫生成器模式的.在现实生活中,我们经常会遇到一些构成比较复杂的物品,比如:电脑,它就是一个复杂的物品,它主要是由CPU.主板.硬盘.显卡.机箱等组装而成的.手机当然也是复杂物品,由主板,各种芯片,RAM 和ROM  摄像头之类的东西组成.但是无论是电脑还是手机,他们的组装过程是固定的,就拿手机来说,组装流水线是固定的,不变的,但是把不同的主板和其他组件组装在一起就会生产出不同型号的手机.那么在软件系统中是不是也会存在这样的对象

Java设计模式之创建者模式,分享热爱编程的程序人生

PS:今天的23中设计模式中的创建者方式,至此告一段落.我今天带来的技术分享为创建者模式以及原型模式.当然在Java中这两种方式很常见,只不过我们写的次数确实有点低而已,但是这不是我不学它的借口!!! 创建者模式 无构建者模式代码示例:需求创建一个摩托车对象 并且使其开始运行. 发动机代码构建: 发动机代码构键 车架代码实例: 车架代码实例 轮胎机代码示例: 轮胎机代码示 摩托车对象实体类: 摩托车对象实体类 测试类: 测试类 总结:摩托车对象时一个大对象:构建过程中可能需要很多其他对象的使用,

【设计模式】—— 创建者模式Builder

前言:[模式总览]——————————by xingoo 模式意图 一个对象的创建十分复杂,为了区分构建过程和使用过程,因此分开.使用一个Director类进行对象的创建,Builder规定了这个创建过程. 模式结构 Builder 抽象建造者接口,规范各个组成部分的构建. ConcreteBuilder 具体建造者角色,实现组成部分的构建,并提供示例. Product 产品角色,创建返回的对象. Director 导演者角色,负责创建以及使用. 使用场景 1 当创建对象复杂并且与其使用过程独立

&quot;围观&quot;设计模式(9)--创建型之创建者模式(Builder Pattern)

生成器模式(英:Builder Pattern)是一种设计模式,又名:建造模式,是一种对象构建模式.它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象.----WIKIPEDIA 个人的理解: 建造者模式可以设置不同的属性或者行为,创建出不一样的对象.比如说生产汽车,假如有三个重要的工序,塑形.拼装.上色.那么可以通过创建者模式来设置,这三道工序中不同的车来说,三道工序可能就是不一样的.通过创建者模式来创建出对象的表现形式也自然就不一样.

设计模式学习总结(五)创建者模式(Builder)

创建者模式,主要针对某些产品有类似的生产步骤,且有需要有先后顺序的进行各个部件的生成. 一.示例展示: 通过学习及总结,以下是我完成的创建者模式的示例: 1.创建产品类:Laptop public class Laptop { ArrayList LaptopParts = new ArrayList(); public void AddParts(string PartName) { LaptopParts.Add(PartName); } public void ShowPartList()

设计模式-行为型模式-创建者模式

Introduce: 创建者模式属于创建型模式,其核心思想是将一个复杂对象的构建算法与它的构成部件.组装方式分离,使得构建算法和组装方式可以独立应对变化,那么部件可以被复用,组装方式可以适应不同的变化,不同的构建算法可以得到不一样的结果.创建者模式主要由5部分构成:Abstrct Builder, Concrete Builder, Abstract Product, Concrete Product and Director. 我们可以举个例子,盖房子.房子是Abstract Product,