时间:2021-05-20
本文实例讲述了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程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
我们先来说一个产品,例如,一个产品,我们举一个常见的例子,手机套。手机套,敢肯定每个人都会使用过。诺基亚时代,从最开始透明塑料的手机套,当时,已经满足人们防摔的
要使用中国联通4g网络,需要满足条件。手机必须支持中国联通4g网络,手机套餐要是用联通4g套餐,当地要有联通4g网络覆盖。满足条件后在手机网络设置里启用4G网络
身份证可以放在手机套里面。身份证放在手机套不会消磁,但是容易丢失。放在带有拉链的钱包里比较安全,平时掏钱包取钱也注意防止身份证滑落而丢失。 居民身份证,分为实
我们来了解一个数据,就是无线用户在用什么样的流量来上淘宝无线端。用户分析从上图看我们中国人用手机上网还是比较艰苦,一半人手机套餐流量是不到200M的,这类人估计
哔哩哔哩33卡可以拒收。哔哩哔哩33卡是B站的专属免流手机套餐,开通后,可免流量在B站客户端观看视频、直播等内容。 bilibili(哔哩哔哩,又称:B站)是