在Java中编写一个关于手机套餐的程序,可以考虑使用建造者模式(Builder Pattern)来设计。建造者模式可以帮助我们创建复杂对象,并且将对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。
定义产品类(MobilePackage)
```java
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;
}
@Override
public String toString() {
return "MobilePackage{" +
"money=" + money +
", shortInfo=" + shortInfo +
", music='" + music + '\'' +
'}';
}
}
```
定义建造者接口(Builder Interface)
```java
package com.demo.buider.itf;
import com.demo.buider.model.MobilePackage;
public interface MobilePackageBuilder {
void buildMoney(float money);
void buildShortInfo(int shortInfo);
void buildMusic(String music);
MobilePackage getMobilePackage();
}
```
实现具体的建造者类(Concrete Builder)
```java
package com.demo.buider.concrete;
import com.demo.buider.itf.MobilePackageBuilder;
import com.demo.buider.model.MobilePackage;
public class ConcreteMobilePackageBuilder implements MobilePackageBuilder {
private MobilePackage mobilePackage = new MobilePackage();
@Override
public void buildMoney(float money) {
mobilePackage.setMoney(money);
}
@Override
public void buildShortInfo(int shortInfo) {
mobilePackage.setShortInfo(shortInfo);
}
@Override
public void buildMusic(String music) {
mobilePackage.setMusic(music);
}
@Override
public MobilePackage getMobilePackage() {
return mobilePackage;
}
}
```
使用建造者模式创建手机套餐
```java
package com.demo.buider.demo;
import com.demo.buider.concrete.ConcreteMobilePackageBuilder;
import com.demo.buider.itf.MobilePackageBuilder;
public class BuilderPatternDemo {
public static void main(String[] args) {
MobilePackageBuilder builder = new ConcreteMobilePackageBuilder();
// 构建手机套餐
builder.buildMoney(100); // 设置话费为100元
builder.buildShortInfo(500); // 设置短信数量为500条
builder.buildMusic("Default"); // 设置彩铃为默认
// 获取构建好的手机套餐
MobilePackage mobilePackage = builder.getMobilePackage();
// 输出手机套餐信息
System.out.println(mobilePackage);
}
}
```
这个示例展示了如何使用建造者模式来创建一个手机套餐对象。通过定义一个建造者接口和具体的建造者类,我们可以灵活地构建不同配置的手机套餐。在`BuilderPatternDemo`类中,我们创建了一个具体的建造者实例,并设置了话费、短信数量和彩铃,最后输出了构建好的手机套餐信息。
你可以根据实际需求进一步扩展这个示例,例如添加更多的套餐选项、用户输入和费用计算功能等。