装饰者模式例子

package cn.tedu.jdbc.pool;

interface Phone{
    public void call();
    public void message();
    
}
class Iphone implements Phone{
    public void call(){
        System.out.println("手机可以打电话了...");
    }
    public void message(){
        System.out.println("手机可以发短信了...");
    }
}


class RingIphone extends Iphone{
    public void call(){
        System.out.println("手机可以听彩铃了...");
    }
}

/**
* 装饰类: RingIphoneDecorate 
* 被装饰者: iphone对象 --> (所属类) Iphone 
*/

class RingIphoneDecorate implements Phone{
    private Iphone iphone =null;
    /* 通过构造方法接收被装饰者 */
    public RingIphoneDecorate(Iphone iphone){
        this.iphone =iphone;
    }
    
    
    public void call() {
        // TODO Auto-generated method stub
        System.out.println("装饰手机可以听彩铃了...");
    }

    public void message() {
        // TODO Auto-generated method stub
        iphone.message();
    }
    
    
}

public class Demo {

    
     
    public static void main(String[] args) {
        // TODO Auto-generated method stub
       Iphone iphone =new Iphone();
       iphone.call();
       iphone.message();
       System.out.println("===================");
        
        Iphone ringIphone = new RingIphone();
        ringIphone.call();
        
        System.out.println("===================");
        
        Phone ringIphoneDecorate = new RingIphoneDecorate(iphone);
        ringIphoneDecorate.call();
        
        /*
         * 装饰模式 在IO流中的使用
         * //字节流 -- 一次读一个字节
        FileInputStream in = new FileInputStream(new File(""));
        InputStreamReader isr = new InputStreamReader(in);
        BufferedReader br = new BufferedReader(isr);
        */
    
        
    }

}

 

posted on 2017-07-13 16:24  荒废的bug  阅读(129)  评论(0)    收藏  举报

导航