装饰模式(一)

用装饰模式模拟手机功能的升级过程:简单的手机(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 @ 2022-10-25 16:08  今天又双叒叕在敲代码  阅读(29)  评论(1)    收藏  举报