创建者模式
场景
- 我们要建造一个复杂的产品,比如:神州飞船、Iphone。这个复杂的产品的创建,有这样一个问题需要处理装配这些字子组件是不是有个步骤问题
- 实际开发中,我们所需要的对象构建是,也非常复杂,有很多步骤需要处理时
建造模式的本质
分离了对象子组件的单独构造(有Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象,这个模式适用于:某个对象的构建过程复杂的情况下使用
由于实现了构建和装配的解耦,不同的构造器,相同的装配,也可以做出不同的对象;相同的构建起,不同的装配顺序也可以做出不同的对象;也就是实现了构建算法,装配算法的解耦,实现了更好的复用
结构
- Builder 抽象建造者接口,规范各个组成部分的构建。
- ConcreteBuilder 具体建造者角色,实现组成部分的构建,并提供示例。
- Product 产品角色,创建返回的对象。
- Director 导演者角色,负责创建以及使用。
结构图
代码示例
/** * 宇宙飞船 */ public class AirShip { private OrbitalModule orbitalModule ;//轨道舱模块 private Engine engine; //发动机 private EscapePower escapePower; //逃逸塔 public OrbitalModule getOrbitalModule() { return orbitalModule; } public void setOrbitalModule(OrbitalModule orbitalModule) { this.orbitalModule = orbitalModule; } public Engine getEngine() { return engine; } public void setEngine(Engine engine) { this.engine = engine; } public EscapePower getEscapePower() { return escapePower; } public void setEscapePower(EscapePower escapePower) { this.escapePower = escapePower; } } class OrbitalModule{ String orbitalNme; public OrbitalModule(String orbitalNme) { super(); this.orbitalNme = orbitalNme; } public String getOrbitalNme() { return orbitalNme; } public void setOrbitalNme(String orbitalNme) { this.orbitalNme = orbitalNme; } } class Engine{ private String engineName; public Engine(String engineName) { this.engineName = engineName; } public String getEngineName() { return engineName; } public void setEngineName(String engineName) { this.engineName = engineName; } } class EscapePower{ private String escapePowerName ; public EscapePower(String escapePowerName) { this.escapePowerName = escapePowerName; } public String getEscapePowerName() { return escapePowerName; } public void setEscapePowerName(String escapePowerName) { this.escapePowerName = escapePowerName; } }
/** * 构建子组件 */ public interface AirShipBuilder { Engine builderEgine(); OrbitalModule builderOrbitalModule(); EscapePower builderEscapePower(); } public class SxtAirShipBuilder implements AirShipBuilder { @Override public Engine builderEgine() { System.out.println("构建发动机"); return new Engine("发动机"); } @Override public OrbitalModule builderOrbitalModule() { System.out.println("构建轨道舱模块"); return new OrbitalModule("轨道舱模块"); } @Override public EscapePower builderEscapePower() { System.out.println("构建逃逸塔"); return new EscapePower("逃逸塔"); } }
/** * 装配 */ public interface AirShipDirector { /** * 组装airship * @return */ AirShip directorAirShip(); } /** * 组装宇宙飞船 装备者调用构建者创建对象 */ public class SxtAirShipDirector implements AirShipDirector { AirShipBuilder builder; public SxtAirShipDirector(AirShipBuilder builder) { this.builder = builder; } @Override public AirShip directorAirShip() { Engine engine =builder.builderEgine(); OrbitalModule orbitalModule = builder.builderOrbitalModule(); EscapePower escapePower =builder.builderEscapePower(); //组装 AirShip airShip = new AirShip(); airShip.setEngine(engine); airShip.setEscapePower(escapePower); airShip.setOrbitalModule(orbitalModule); return airShip; } }
public class Client { public static void main(String[] args){ AirShipBuilder builder = new SxtAirShipBuilder(); AirShipDirector director = new SxtAirShipDirector(builder); AirShip ship = director.directorAirShip(); System.out.println(ship.getEngine().getEngineName()); System.out.println(ship.getOrbitalModule().getOrbitalNme()); System.out.println(ship.getEscapePower().getEscapePowerName()); } }
开发中的应用场景
- StringBuilder类的append方法
- SQL中的PrepareStatement
- JDOM中,DomBuilder、SAXBuilder
相关推荐
设计模式-创建者模式(Builder) 创建者模式(Builder)是软件设计模式中的一种结构型模式,它将一个复杂对象的构造与它的表示分离,使得同样的构建过程可以创建不同的表示。该模式允许用户可以只通过指定复杂对象...
**建造者模式(Builder Pattern)**是软件设计模式中的一种,属于创建型模式。它将复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通常用于那些需要大量构造参数的对象,通过...
建造者模式(Builder Pattern)是设计模式中的一种创建型模式,它允许我们分步骤构建复杂的对象,而无需暴露其构造过程。这种模式的核心思想在于将对象的构建与表示分离,使得构建过程和不同表示可以独立变化,提高...
统设计中,有时候面临着一个“复杂系统”的创建工作,该对象通常由各个部分的子对象用一定的算法构成,或者说按一定的步骤组合而成;这些的算法和步骤是稳定的,而构成这个对象的子对象却经常由于需求改变而发生...
Builder设计模式是一种创建型设计模式,它提供了一种方法来分步骤构造复杂的对象,使得构建过程和表示分离,允许用户只关注对象的构建而无需关心具体实现细节。在Java或其他编程语言中,Builder模式通常用于创建那些...
### 设计模式之创建者模式详解 #### 一、创建者模式概述 创建者模式(Builder Pattern),又称建造者模式,是一种常用的软件设计模式。它主要用于解决对象创建时的复杂性和灵活性问题。创建者模式的核心思想是将一...
"Builder"模式是其中的一种行为设计模式,它主要用于构造复杂对象的创建过程,将对象的创建步骤分离,使得同样的构建过程可以创建不同的表示。Builder模式允许我们更加灵活地构造对象,而无需关注其内部的构建细节。...
Builder设计模式是一种软件设计模式,它允许我们分步骤构建复杂对象,通过将构造过程与对象的表示分离,使得相同的构造过程可以创建不同的表示。在Java或者其他面向对象编程语言中,Builder模式经常被用来提高代码的...
在深入探讨C#设计模式中的建造者(Builder)模式之前,我们先来理解一下什么是设计模式。设计模式是在软件工程中解决常见问题的一种通用可重用解决方案,它们提供了一种标准化的方法来解决软件开发中遇到的挑战。...
Builder模式是一种创建型设计模式,它提供了一种创建对象的抽象接口,并允许子类按照步骤构建复杂的对象。这种模式将对象的创建过程分离出来,使得同样的构造过程可以创建不同的表示,从而实现对象创建过程的解耦。 ...
Builder模式是一种创建型设计模式,它提供了一种方法来分步骤构建复杂的对象,使得构建过程和表示分离。这种模式在程序开发中常用于构造产品对象,尤其是当对象的构造过程较为复杂时,Builder模式能够帮助我们更好地...
设计模式之Builder 设计模式之Singleton(单态) 结构模式: 设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计...
Builder设计模式是一种软件设计模式,它属于创建型模式,主要用于对象的复杂构建过程。这种模式将对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。Builder模式的核心在于提供一个构建器接口,该接口...
【创建型模式】设计模式之建造者模式(Builder Pattern) 建造者模式(Builder Pattern)是设计模式中的一个创建型模式,它提供了一种方法来分步骤构造复杂的对象,使得构造过程和表示分离,使得同样的构建过程可以...
Builder设计模式是创建型模式之一,主要解决复杂对象的构建问题,使得构建过程与表示分离。 Builder模式的核心思想是将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。这种模式通常应用于...
创建者模式,也被称为构造器模式,是一种设计模式,它提供了创建对象的统一接口,隔离了客户端代码与对象的创建细节,使得系统更加灵活,易于维护。这种模式主要用于当一个对象的构建与其表示分离时的情况。 创建者...
创建者模式是一种设计模式,属于建造者模式,它将复杂的对象构造过程分离开来,使得相同的构造过程可以创建不同的表示。这种模式的主要优点在于能够隔离对象的构建过程,使代码更加清晰,易于维护,并且支持更复杂的...
C#设计模式之Builder生成器模式解决带老婆配置电脑问题实例 本文主要介绍了C#设计模式之Builder生成器模式解决带老婆配置电脑问题,简单介绍了生成器模式的概念、功能并结合具体实例形式分析了C#生成器模式解决配...
设计模式之Builder 设计模式之Singleton(单态) 结构模式: 设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计...