装饰模式(一)

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

(1)类图

 

(2)源代码

 

复制代码
// JarPhone.java
package test11;
public class JarPhone extends PhoneDecorator{
    public JarPhone(Phone p) {
        // TODO Auto-generated constructor stub
        super(p);
    }
    public void receiveCall() {
        super.receiveCall();
        System.out.println("接受来电,手机震动");
    }
}
// ComplexPhone.java
package test11;
public class ComplexPhone extends PhoneDecorator{     
    public ComplexPhone(Phone p) {
        // TODO Auto-generated constructor stub
        super(p);
    }
    public void receiveCall() {
        super.receiveCall();
        System.out.println("接受来电,灯光闪烁");
    }
}
// PhoneDecorator.java
package test11;
public class PhoneDecorator extends Phone{
    private Phone phone;
    public PhoneDecorator(Phone p) {
        // TODO Auto-generated constructor stub
      if(p!=null) {
          phone=p;
      }else {
          phone=new SimplePhone();
      }
    }
    @Override
    public void receiveCall() {
        // TODO Auto-generated method stub
        phone.receiveCall();
    }
}
// SimplePhone.java
package test11;
public class SimplePhone extends Phone {
    @Override
    public void receiveCall() {
         // TODO Auto-generated method stub
             System.out.println("接受来电,电话响了");        
    }
}
// Client.java
package test11;
public class Client {
    public static void main(String[]args) {
        Phone p=new SimplePhone();
        p.receiveCall();
        System.out.println("Simple");
        Phone p1=new JarPhone(p);
        p1.receiveCall();
        System.out.println("JarPhone");
        Phone p2=new ComplexPhone(p1);
        p2.receiveCall();
        System.out.println("ComplexPhone");
    }
}
复制代码

 

posted @   今天又双叒叕在敲代码  阅读(27)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
历史上的今天:
2021-10-25 10.25学习总结
点击右上角即可分享
微信分享提示