11.20
用装饰模式模拟手机功能的升级过程:简单的手机(SimplePhone)在接收来电时,会发出声音提醒主人;而JarPhone除了声音还能振动;更高级的手机(ComplexPhone)除了声音、振动外,还有灯光闪烁提示。
实验要求:
-
提交类图;
-
提交源代码;
package zhuangshi;
// 抽象构件:Phone接口
interface Phone {
void voice();
}
// 具体构件:SimplePhone类
class SimplePhone implements Phone {
@Override
public void voice() {
System.out.println("发出声音提醒");
}
}
// 抽象装饰类:Changer
abstract class Changer implements Phone {
private Phone phone;
public Changer(Phone phone) {
this.phone = phone;
}
@Override
public void voice() {
phone.voice();
}
}
// 具体装饰类:JarPhone
class JarPhone extends Changer {
public JarPhone(Phone phone) {
super(phone);
}
@Override
public void voice() {
super.voice();
vibrate();
}
// 增加振动功能
private void vibrate() {
System.out.println("手机振动");
}
}
// 具体装饰类:ComplexPhone
class ComplexPhone extends Changer {
public ComplexPhone(Phone phone) {
super(phone);
}
@Override
public void voice() {
super.voice();
flash();
}
// 增加闪光功能
private void flash() {
System.out.println("灯光闪烁");
}
}
// 测试类
public class Main {
public static void main(String[] args) {
// 创建一个简单手机
Phone simplePhone = new SimplePhone();
System.out.println("简单手机来电:");
simplePhone.voice();
System.out.println();
// 创建一个带振动的手机
Phone jarPhone = new JarPhone(simplePhone);
System.out.println("带振动的手机来电:");
jarPhone.voice();
System.out.println();
// 创建一个带闪光的高级手机
Phone complexPhone = new ComplexPhone(jarPhone);
System.out.println("高级手机来电:");
complexPhone.voice();
}
}
3.注意编程规范。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析
· 重磅发布!DeepSeek 微调秘籍揭秘,一键解锁升级版全家桶,AI 玩家必备神器!