一模式定义
建造者简单理解就是造东西,只不过建造者模式建造的不是一个简单的东西,是一个比较复杂的东西。
二模式举例
1模式分析
我们借用顾客到手杌营业厅去办理手机套餐的例子说明这一模式
经过抽象分析后,我们得出下面信息
客户张三——终端需求
营业厅操作员——指导者(通知指导建造者生产什么样的手机套餐)
计算机——建造者(建造各种手机套餐)
手机套餐——产品
2建造者模式静态建模
3代码示例
3.1创建产品——手机套餐
package com.demo.buider.model; public class MobilePackage { // 话费 private float money; // 短信 private int shortInfo; // 彩玲 private String music; public float getMoney() { return money; } public void setMoney(float money) { this.money = money; } public int getShortInfo() { return shortInfo; } public void setShortInfo(int shortInfo) { this.shortInfo = shortInfo; } public String getMusic() { return music; } public void setMusic(String music) { this.music = music; } }
3.2建造者接口
package com.demo.buider.itf; import com.demo.buider.model.MobilePackage; /** * 手机套餐Builder * * @author * */ public interface IMobileBuilder { // 建造手机套餐的话费 public void buildMoney(); // 建造手机套餐的短信 public void buildShortInfo(); // 建造手机套餐的彩玲 public void buildMusic(); // 返回建造的手机套餐对象 public MobilePackage getMobilePackage(); }
3.3建立具体建造者
具体的建造者1
package com.demo.buider.itf; import com.demo.buider.base.AbstractBasePackage; import com.demo.buider.model.MobilePackage; /** * 套餐1 * * @author maofw * */ public class MobileBuilderImpl1 extends AbstractBasePackage implements IMobileBuilder { // 建造手机套餐的话费 public void buildMoney() { this.mobilePackage.setMoney(20.0f); } // 建造手机套餐的彩玲 public void buildMusic() { this.mobilePackage.setMusic("天使"); } // 建造手机套餐的短信 public void buildShortInfo() { this.mobilePackage.setShortInfo(400); } // 返回建造的手机套餐对象 public MobilePackage getMobilePackage() { return this.mobilePackage; } }
具体的建造者2
package com.demo.buider.itf; import com.demo.buider.base.AbstractBasePackage; import com.demo.buider.model.MobilePackage; /** * 套餐2 * * @author maofw * */ public class MobileBuilderImpl2 extends AbstractBasePackage implements IMobileBuilder { // 建造手机套餐的话费 public void buildMoney() { this.mobilePackage.setMoney(30.0f); } // 建造手机套餐的彩玲 public void buildMusic() { this.mobilePackage.setMusic("大海"); } // 建造手机套餐的短信 public void buildShortInfo() { this.mobilePackage.setShortInfo(600); } // 返回建造的手机套餐对象 public MobilePackage getMobilePackage() { return this.mobilePackage; } }
3.4创建指导者
package com.demo.buider.director; import com.demo.buider.itf.IMobileBuilder; import com.demo.buider.model.MobilePackage; /** * 手机套餐指导者 * * @author maofw * */ public class MobileDirector { public MobilePackage createMobilePackage(IMobileBuilder mobileBuilder) { if (mobileBuilder != null) { // 构建话费 mobileBuilder.buildMoney(); // 构建短信 mobileBuilder.buildShortInfo(); // 构建彩玲 mobileBuilder.buildMusic(); // 返回手机套餐 return mobileBuilder.getMobilePackage(); } return null; } }
让客户订购手机套餐
package com.demo.buider; import com.demo.buider.director.MobileDirector; import com.demo.buider.itf.MobileBuilderImpl1; import com.demo.buider.itf.MobileBuilderImpl2; import com.demo.buider.model.MobilePackage; public class MainApp { /** * 主应用程序 * * @param args */ public static void main(String[] args) { // 创建指导者 MobileDirector mobileDirector = new MobileDirector(); // 套餐1 MobileBuilderImpl1 mobileBuilderImpl1 = new MobileBuilderImpl1(); // 套餐2 MobileBuilderImpl2 mobileBuilderImpl2 = new MobileBuilderImpl2(); printMessage(mobileDirector.createMobilePackage(mobileBuilderImpl1)); printMessage(mobileDirector.createMobilePackage(mobileBuilderImpl2)); } /** * 打印输出套餐信息 */ public static void printMessage(MobilePackage mobilePackage) { System.out.println("--话费:" + mobilePackage.getMoney() + "\t短信:" + mobilePackage.getShortInfo() + "条\t彩玲:" + mobilePackage.getMusic()); } }
运行结果
--话费:20.0短信:400条彩玲:天使
--话费:30.0短信:600条彩玲:大海
三该模式设汁原则
1分步骤创建复杂对象
2构造和表示分离
3单一职责原则
四使用场合
1当生成产品对象内部具有复杂结构时
2当复杂对象需要与表示分离,可能需要创建不同表示时
3当需要向客户隐藏产品內部结构表现时
相关推荐
建造者模式是一种结构型设计模式,它允许我们分步骤创建复杂对象,而无需暴露构建过程的内部细节。这种模式在Java编程中非常常见,尤其是在处理需要多种构建方式或需要隔离对象构造过程的场景。 建造者模式的核心...
通过上述介绍,我们可以看到建造者模式在Java中实现办理手机套餐功能时,是如何通过抽象和模块化的方式,使得套餐配置更加灵活,同时降低了代码的耦合度。通过选择不同的具体建造者,可以快速地构建出满足不同需求的...
建造者模式(Builder Pattern)是软件工程中一种用于创建对象的抽象工厂方法,它将复杂的构建过程分解为一系列步骤,使得构建过程可以独立于其表示进行。这种模式允许客户端使用相同的构建过程创建不同表现形式的...
建造者模式是一种设计模式,它将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。在C++中实现建造者模式,我们可以遵循以下步骤: 首先,我们需要定义一个抽象建造者(Builder)类,它声明了一...
建造者模式(Builder Pattern)是设计模式中的一种创建型模式,它允许我们分步骤构建复杂的对象,通过将构造过程与对象本身分离,使得同样的构造过程可以创建不同的表示。这种模式常用于当创建对象的步骤复杂或者...
Java建造者模式是一种设计模式,属于创建型模式,它的主要目的是通过隔离对象的构建过程和其表示,使得构造复杂对象的过程更加灵活。这种模式通常在需要创建对象的多个部分,并且这些部分可能需要以特定顺序组合时...
建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种方法来分步骤构建复杂的对象,使得构建过程和表示分离。这种模式常用于当一个对象的构建过程复杂且需要多个步骤时,或者当我们希望同一个构建过程...
### 建造者模式详解 #### 模式介绍 建造者模式(Builder Pattern)是设计模式中的一种,主要用于创建复杂对象。此模式的核心在于将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。简单...
建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种方法来分步骤构建复杂的对象,使得构建过程和表示分离,使得同样的构建过程可以创建不同的表示。这种模式经常在对象的构造过程中需要进行多种选择...
建造者模式,也被称为Director模式,是设计模式中的一种创建型模式。在iOS开发中,尤其是在构建复杂对象或者需要进行定制化组装时,建造者模式显得尤为重要。它将产品的构造过程与产品本身分离,使得创建过程更加...
建造者模式是一种设计模式,属于创建型模式,它允许我们分步骤构造复杂对象,而无需暴露构造过程。这种模式将对象的构造过程和表示层分离,使得同样的构造过程可以创建不同的表示形式。在《设计模式:可复用面向对象...
建造者模式,是设计模式中的一种创建型模式,它的核心思想是将复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。在Java编程中,这种模式经常用于生成对象,特别是当对象的创建过程较为复杂时,...
【建造者模式】是软件工程中的一个设计模式,属于创建型模式,它隔离了对象的构造过程,并允许用户以步骤化的方式创建复杂对象。在Qt5框架中,我们可以利用其强大的C++支持来实现建造者模式,这对于创建复杂的UI或者...
建造者模式,是一种创建型设计模式,它提供了一种创建对象的最佳方式,特别是在对象的构建过程比较复杂,需要多个步骤时。在建造者模式中,我们创建一个指导对象(Director),该对象负责组织构建过程,而具体的构建...
建造者模式(Builder Pattern)是Java设计模式中的创建型模式之一,它允许我们分步骤创建复杂的对象,通过将构造过程与表示分离,使得同样的构造过程可以创建不同的表示。这种模式通常用于那些具有多种构建方式或者...
建造者模式是一种设计模式,它将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。在Java中,这种模式通常用于构建对象时,尤其是当对象的构造过程复杂,需要多步骤或者允许用户自定义构建过程时...
在给定的压缩包文件中,"设计模式例子,观察者模式,建造者模式" 提到了两种重要的设计模式:观察者模式(Observer Pattern)和建造者模式(Builder Pattern)。下面我们将深入探讨这两种设计模式的概念、应用场景、...
建造者模式是软件设计模式中的一种,主要用于将复杂的对象构建过程与对象的使用分离,使得同样的构建过程可以创建不同的表示。在C#中,我们可以通过类的继承和接口的使用来实现这一模式。以下是关于“C#设计模式之...
建造者模式是一种软件设计模式,它允许我们分步骤构建复杂对象,而无需暴露构建过程的细节。在C++中,这种模式尤其有用,因为它可以提供一种灵活的方式来构造对象,同时保持代码的清晰和可维护性。这个名为"C++建造...