建造者模式:将一个复杂对象的创建和它的表示相互分离,使得同样的构建过程可以有不同的表示
建造者模式的优点:
具有很强的封装性,高层调用者不用关心具体对象的组装过程,实现高层调用和对象组装过程的解耦,对象的组装过程也是相互独立的,易于扩展
标准类图:
使用建造者模式构建汽车:
汽车抽象接口:
package org.robbie.hibernate.generate.builder; public interface Car { public void wheel(); public void architect(); public void getInfo(); }
为了使用属性方便和提供复用,构造了一个汽车抽象类
package org.robbie.hibernate.generate.builder; public abstract class AbstractCar implements Car { protected String wheelSituation; protected String architectSituation; public String getWheelSituation() { return wheelSituation; } public void setWheelSituation(String wheelSituation) { this.wheelSituation = wheelSituation; } public String getArchitectSituation() { return architectSituation; } public void setArchitectSituation(String architectSituation) { this.architectSituation = architectSituation; } @Override public void wheel() { System.out.println(this.wheelSituation); } @Override public void architect() { System.out.println(this.architectSituation); } }
具体汽车类:
package org.robbie.hibernate.generate.builder; public class BMW extends AbstractCar implements Car{ @Override public void getInfo() { System.out.println("this is bmw: wheel is " + super.wheelSituation + " and architect is " + super.architectSituation); } }
package org.robbie.hibernate.generate.builder; public class Benz extends AbstractCar implements Car { @Override public void getInfo() { System.out.println("this is benz: wheel is " + super.wheelSituation + " and architect is " + super.architectSituation); } }
建造者抽象:
package org.robbie.hibernate.generate.builder; public interface Builder { Car build(BluePrint bluePrint); }
具体的建造者:
package org.robbie.hibernate.generate.builder; public class BMWBuilder implements Builder{ @Override public Car build(BluePrint bluePrint) { BMW bmw = new BMW(); bmw.setWheelSituation(bluePrint.getWheel()); bmw.setArchitectSituation(bluePrint.getArchitect()); return bmw; } }
package org.robbie.hibernate.generate.builder; public class BenzBuilder implements Builder{ @Override public Car build(BluePrint bluePrint) { Benz benz = new Benz(); benz.setArchitectSituation(bluePrint.getWheel()); benz.setWheelSituation(bluePrint.getWheel()); return benz; } }
蓝图类(建造者根据蓝图建造汽车):
package org.robbie.hibernate.generate.builder; public class BluePrint { private String wheel; private String architect; public String getWheel() { return wheel; } public void setWheel(String wheel) { this.wheel = wheel; } public String getArchitect() { return architect; } public void setArchitect(String architect) { this.architect = architect; } }
指导者(创建具体的蓝图交给建造者进行建造,指导者也可以进行抽象):
package org.robbie.hibernate.generate.builder; public class Director { private Builder benzBuilder = new BenzBuilder(); private Builder BMWBuilder = new BMWBuilder(); public Car createBigWheelBmw(){ BluePrint bluePrint = new BluePrint(); bluePrint.setArchitect("半独立悬挂系统"); bluePrint.setWheel("大轮胎"); return BMWBuilder.build(bluePrint); } public Car createStandardArchitectBmw(){ BluePrint bluePrint = new BluePrint(); bluePrint.setArchitect("独立悬挂系统"); bluePrint.setWheel("小轮胎"); return BMWBuilder.build(bluePrint); } public Car createSmallWheelBenz(){ BluePrint bluePrint = new BluePrint(); bluePrint.setArchitect("独立悬挂系统"); bluePrint.setWheel("小轮胎"); return benzBuilder.build(bluePrint); } public Car createHalfStandardArchitectBenz(){ BluePrint bluePrint = new BluePrint(); bluePrint.setArchitect("半独立悬挂系统"); bluePrint.setWheel("大轮胎"); return benzBuilder.build(bluePrint); } }
场景类:
package org.robbie.hibernate.generate.builder; public class Client { public static void main(String[] args) { Director director = new Director(); Car bmw1 = director.createBigWheelBmw(); Car bmw2 = director.createStandardArchitectBmw(); Car benz1 = director.createSmallWheelBenz(); Car benz2 = director.createHalfStandardArchitectBenz(); bmw1.getInfo(); bmw2.getInfo(); benz1.getInfo(); benz2.getInfo(); } }
相关推荐
建造者模式是一种结构型设计模式,它允许我们分步骤创建复杂对象,而无需暴露构建过程的内部细节。这种模式在Java编程中非常常见,尤其是在处理需要多种构建方式或需要隔离对象构造过程的场景。 建造者模式的核心...
建造者模式是一种设计模式,它将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。在C++中实现建造者模式,我们可以遵循以下步骤: 首先,我们需要定义一个抽象建造者(Builder)类,它声明了一...
建造者模式(Builder Pattern)是软件工程中一种用于创建对象的抽象工厂方法,它将复杂的构建过程分解为一系列步骤,使得构建过程可以独立于其表示进行。这种模式允许客户端使用相同的构建过程创建不同表现形式的...
建造者模式(Builder Pattern)是设计模式中的一种创建型模式,它允许我们分步骤构建复杂的对象,通过将构造过程与对象本身分离,使得同样的构造过程可以创建不同的表示。这种模式常用于当创建对象的步骤复杂或者...
### 建造者模式详解 #### 模式介绍 建造者模式(Builder Pattern)是设计模式中的一种,主要用于创建复杂对象。此模式的核心在于将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。简单...
Java建造者模式是一种设计模式,属于创建型模式,它的主要目的是通过隔离对象的构建过程和其表示,使得构造复杂对象的过程更加灵活。这种模式通常在需要创建对象的多个部分,并且这些部分可能需要以特定顺序组合时...
建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种方法来分步骤构建复杂的对象,使得构建过程和表示分离,使得同样的构建过程可以创建不同的表示。这种模式经常在对象的构造过程中需要进行多种选择...
建造者模式,也被称为Director模式,是设计模式中的一种创建型模式。在iOS开发中,尤其是在构建复杂对象或者需要进行定制化组装时,建造者模式显得尤为重要。它将产品的构造过程与产品本身分离,使得创建过程更加...
建造者模式是一种设计模式,属于创建型模式,它允许我们分步骤构建复杂对象,而无需暴露构造过程。这种模式在IT行业中广泛应用于软件系统中,尤其是当需要创建的对象具有多种可变构造选项时。大众CC是一款知名的轿车...
建造者模式是软件设计模式中的一种,主要用于将复杂的对象构建过程与对象的使用分离,使得同样的构建过程可以创建不同的表示。在C#中,我们可以通过类的继承和接口的使用来实现这一模式。以下是关于“C#设计模式之...
建造者模式(Builder Pattern)是Java设计模式中的创建型模式之一,它允许我们分步骤创建复杂的对象,通过将构造过程与表示分离,使得同样的构造过程可以创建不同的表示。这种模式通常用于那些具有多种构建方式或者...
建造者模式,是一种创建型设计模式,它提供了一种创建对象的最佳方式,特别是在对象的构建过程比较复杂,需要多个步骤时。在建造者模式中,我们创建一个指导对象(Director),该对象负责组织构建过程,而具体的构建...
建造者模式是一种设计模式,它将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。在Java中,这种模式通常用于构建对象时,尤其是当对象的构造过程复杂,需要多步骤或者允许用户自定义构建过程时...
【建造者模式】是软件工程中的一个设计模式,属于创建型模式,它隔离了对象的构造过程,并允许用户以步骤化的方式创建复杂对象。在Qt5框架中,我们可以利用其强大的C++支持来实现建造者模式,这对于创建复杂的UI或者...
建造者模式: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表现。这就是建造者模式。 建造者模式可以把一个产品的内部表象与产品的生成过程分隔开来,从而可以使一个建造过程就可以生成...
在给定的压缩包文件中,"设计模式例子,观察者模式,建造者模式" 提到了两种重要的设计模式:观察者模式(Observer Pattern)和建造者模式(Builder Pattern)。下面我们将深入探讨这两种设计模式的概念、应用场景、...
建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种方法来分步骤构建复杂的对象,使得构建过程和表示分离。这种模式常用于当一个对象的构建过程复杂且需要多个步骤时,或者当我们希望同一个构建过程...