11.20

用装饰模式模拟手机功能的升级过程:简单的手机(SimplePhone)在接收来电时,会发出声音提醒主人;而JarPhone除了声音还能振动;更高级的手机(ComplexPhone)除了声音、振动外,还有灯光闪烁提示。
实验要求:

  1. 提交类图;

  2. 提交源代码;

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.注意编程规范。

posted @   aallofitisst  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析
· 重磅发布!DeepSeek 微调秘籍揭秘,一键解锁升级版全家桶,AI 玩家必备神器!
点击右上角即可分享
微信分享提示