本文实例讲述了Java使用建造者模式实现办理手机套餐功能。分享给大家供大家参考,具体如下:
一、模式定义
建造者简单理解就是造东西,只不过建造者模式建造的不是一个简单的东西,是一个比较复杂的东西。
二、模式举例
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数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
本文向大家介绍java实现建造者模式(Builder Pattern),包括了java实现建造者模式(Builder Pattern)的使用技巧和注意事项,需要的朋友参考一下 一、什么是建筑者模式? 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建一个复杂的对象。 一个 Builder 类会一步一步构造最终的对象,该 Builder 类独立于其他对象。 建造者
主要内容:介绍,实现,Item.java,Packing.java,Wrapper.java,Bottle.java,Burger.java,ColdDrink.java,VegBurger.java,ChickenBurger.java,Coke.java,Pepsi.java,Meal.java,MealBuilder.java,BuilderPatternDemo.java,相关文章建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。 介绍 意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的
简介 生成器模式是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。 范例 /** "Product" */ class Pizza { private String dough = ""; private String sauce = ""; private String topping = ""
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。 介绍 意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的
处理DOM时,我们常常想要去动态的构建新的元素--这是一个会让我们希望构建的元素最终所包含的标签,属性和参数的复杂性有所增长的过程。 定义复杂的元素时需要特别的小心,特别是如果我们想要在我们元素标签的字面意义上(这可能会乱成一团)拥有足够的灵活性,或者取而代之去获得更多面向对象路线的可读性。我们需要一种为我们构建复杂DOM对象的机制,它独立于为我们提供这种灵活性的对象本身,而这正是建造者模式为我们