本篇文章给大家分享的是有关如何在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的基本数据类型分为:1、整数类型,用来表示整数的数据类型。2、浮点类型,用来表示小数的数据类型。3、字符类型,字符类型的关键字是“char”。4、布尔类型,是表示逻辑值的基本数据类型。
以上就是如何在Java中利用建造者模式实现办理手机套餐功能,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注天达云行业资讯频道。