• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
戈瑾
博客园    首页    新随笔    联系   管理    订阅  订阅
装饰模式——java实现

问题描述:

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

类图:

 

 

Java源代码:

//Phone.java
package shiyan11;

public interface  Phone {
        public void call();
} 
//SimplePhone.java
package shiyan11;

public class SimplePhone implements Phone{
    public SimplePhone(){
        System.out.println("手机收到来电");
    }
    public void call(){
        System.out.println("发出声音:主人来电话啦!");
    }
} 
//UpgradePhone.java
package shiyan11;

public class UpgradePhone implements Phone{
    private Phone phone;
    public UpgradePhone(Phone a){
        phone=a;
    }
    public void call(){
        phone.call();
    }
} 
//JarPhone.java
package shiyan11;

public class JarPhone extends UpgradePhone{
    public JarPhone(Phone phone){
        super(phone);
        System.out.println("***增加振动的功能***");
    }
    public void shoke(){
        System.out.println("振动:嗡嗡嗡");
    }
} 
//ComplexPhone.java
package shiyan11;
public class ComplexPhone extends UpgradePhone{
    public ComplexPhone(Phone phone){
        super(phone);
        System.out.println("***增加闪光功能***");
    }
    public void light(){
        System.out.println("灯光闪烁:咔嚓");
    }
} 

 

java运行结果:

 

 

posted on 2021-10-17 14:34  戈瑾  阅读(138)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3