失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 建造者模式——办理手机套餐

建造者模式——办理手机套餐

时间:2024-02-20 16:41:44

相关推荐

建造者模式——办理手机套餐

一模式定义

建造者简单理解就是造东西,只不过建造者模式建造的不是一个简单的东西,是一个比较复杂的东西。

二模式举例

1模式分析

我们借用顾客到手杌营业厅去办理手机套餐的例子说明这一模式

经过抽象分析后,我们得出下面信息

客户张三——终端需求

营业厅操作员——指导者(通知指导建造者生产什么样的手机套餐)

计算机——建造者(建造各种手机套餐)

手机套餐——产品

2建造者模式静态建模

3代码示例

3.1创建产品——手机套餐

Java代码

packagecom.demo.buider.model;

publicclassMobilePackage

{

//话费

privatefloatmoney;

//短信

privateintshortInfo;

//彩玲

privateStringmusic;

publicfloatgetMoney()

{

returnmoney;

}

publicvoidsetMoney(floatmoney)

{

this.money=money;

}

publicintgetShortInfo()

{

returnshortInfo;

}

publicvoidsetShortInfo(intshortInfo)

{

this.shortInfo=shortInfo;

}

publicStringgetMusic()

{

returnmusic;

}

publicvoidsetMusic(Stringmusic)

{

this.music=music;

}

}

3.2建造者接口

Java代码

packagecom.demo.buider.itf;

importcom.demo.buider.model.MobilePackage;

/**

*手机套餐Builder

*

*@author

*

*/

publicinterfaceIMobileBuilder

{

//建造手机套餐的话费

publicvoidbuildMoney();

//建造手机套餐的短信

publicvoidbuildShortInfo();

//建造手机套餐的彩玲

publicvoidbuildMusic();

//返回建造的手机套餐对象

publicMobilePackagegetMobilePackage();

}

3.3建立具体建造者

具体的建造者1

Java代码

packagecom.demo.buider.itf;

importcom.demo.buider.base.AbstractBasePackage;

importcom.demo.buider.model.MobilePackage;

/**

*套餐1

*

*@authormaofw

*

*/

publicclassMobileBuilderImpl1extendsAbstractBasePackageimplementsIMobileBuilder

{

//建造手机套餐的话费

publicvoidbuildMoney()

{

this.mobilePackage.setMoney(20.0f);

}

//建造手机套餐的彩玲

publicvoidbuildMusic()

{

this.mobilePackage.setMusic("天使");

}

//建造手机套餐的短信

publicvoidbuildShortInfo()

{

this.mobilePackage.setShortInfo(400);

}

//返回建造的手机套餐对象

publicMobilePackagegetMobilePackage()

{

returnthis.mobilePackage;

}

}

具体的建造者2

Java代码

packagecom.demo.buider.itf;

importcom.demo.buider.base.AbstractBasePackage;

importcom.demo.buider.model.MobilePackage;

/**

*套餐2

*

*@authormaofw

*

*/

publicclassMobileBuilderImpl2extendsAbstractBasePackageimplementsIMobileBuilder

{

//建造手机套餐的话费

publicvoidbuildMoney()

{

this.mobilePackage.setMoney(30.0f);

}

//建造手机套餐的彩玲

publicvoidbuildMusic()

{

this.mobilePackage.setMusic("大海");

}

//建造手机套餐的短信

publicvoidbuildShortInfo()

{

this.mobilePackage.setShortInfo(600);

}

//返回建造的手机套餐对象

publicMobilePackagegetMobilePackage()

{

returnthis.mobilePackage;

}

}

3.4创建指导者

Java代码

packagecom.demo.buider.director;

importcom.demo.buider.itf.IMobileBuilder;

importcom.demo.buider.model.MobilePackage;

/**

*手机套餐指导者

*

*@authormaofw

*

*/

publicclassMobileDirector

{

publicMobilePackagecreateMobilePackage(IMobileBuildermobileBuilder)

{

if(mobileBuilder!=null)

{

//构建话费

mobileBuilder.buildMoney();

//构建短信

mobileBuilder.buildShortInfo();

//构建彩玲

mobileBuilder.buildMusic();

//返回手机套餐

returnmobileBuilder.getMobilePackage();

}

returnnull;

}

}

让客户订购手机套餐

Java代码

packagecom.demo.buider;

importcom.demo.buider.director.MobileDirector;

importcom.demo.buider.itf.MobileBuilderImpl1;

importcom.demo.buider.itf.MobileBuilderImpl2;

importcom.demo.buider.model.MobilePackage;

publicclassMainApp

{

/**

*主应用程序

*

*@paramargs

*/

publicstaticvoidmain(String[]args)

{

//创建指导者

MobileDirectormobileDirector=newMobileDirector();

//套餐1

MobileBuilderImpl1mobileBuilderImpl1=newMobileBuilderImpl1();

//套餐2

MobileBuilderImpl2mobileBuilderImpl2=newMobileBuilderImpl2();

printMessage(mobileDirector.createMobilePackage(mobileBuilderImpl1));

printMessage(mobileDirector.createMobilePackage(mobileBuilderImpl2));

}

/**

*打印输出套餐信息

*/

publicstaticvoidprintMessage(MobilePackagemobilePackage)

{

System.out.println("--话费:"+mobilePackage.getMoney()+"\t短信:"+mobilePackage.getShortInfo()+"条\t彩玲:"+mobilePackage.getMusic());

}

}

运行结果

--话费:20.0短信:400条彩玲:天使

--话费:30.0短信:600条彩玲:大海

三该模式设汁原则

1分步骤创建复杂对象

2构造和表示分离

3单一职责原则

四使用场合

1当生成产品对象内部具有复杂结构时

2当复杂对象需要与表示分离,可能需要创建不同表示时

3当需要向客户隐藏产品内部结构表现时

如果觉得《建造者模式——办理手机套餐》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。