Java使用建造者模式实现办理手机套餐功能详解
程序员文章站
2023-12-17 18:33:28
本文实例讲述了java使用建造者模式实现办理手机套餐功能。分享给大家供大家参考,具体如下:
一、模式定义
建造者简单理解就是造东西,只不过建造者模式建造的不是一个简单的...
本文实例讲述了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程序设计有所帮助。