周三

来源:互联网 发布:薛之谦淘宝下线 编辑:程序博客网 时间:2024/05/02 06:44
 

 八月三十一号  周三

                  赵磊

 

今天学习了流的装饰模式,虽然听的挺迷茫 但通过老师举得超级玛丽,音乐播放器等等几个生动的例子,多少有一些小小的体会,先说说自己的体会:我感觉装饰模式就是用最少的类通过互相组合,层层套用,来实现一个强大的功能,各个类就像机器的零件一样,通过组装在一起,变成一个可以干活的机器。今天还知道了几个eclipse的快捷键,感觉真是方便,看来以后得多研究研究eclipse。下面看看老师举例的代码,通过代码 ,大概了解了装饰模式的具体使用方法,其实还是迷茫。。。。。。。自己写总是不知道从哪下手。。。。

public interface IUsb{

  public void readData();

  public void writeData();

}

 

//U盘

public class  UDisk implements IUsb{

  public void readData(){

         System.out.println("U盘读数据...");

  }

 

  public void writeData(){

         System.out.println("U盘写数据...");

  }

}

 

public MP3Play implements IUsb{

  public void readData(){

         System.out.println("MP3读数据...");

  }

 

  public void writeData(){

         System.out.println("MP3写数据...");

  }

 

}

 

public class Decorator implements IUsb{

  private IUsb usb;

 

  public Decorator(IUsb _usb){

         usb = _usb;

  }

 

  public void readData(){//其实执行的是IUSB的ReadData

         usb.readData();

  }

 

  public void writeData(){//其实执行的是IUSB的WriteData

         usb.writeData();

  }    

}

 

// 音乐播放器,提供播放音乐的功能

public class MusicPlayer extends Decorator{

  public MusicPlayer(IUsb usb){

         super(usb);

  }

 

  public void playMusic(){

         System.out.println("播放音乐...");

  }

}

 

// 照相机

public class Camera extends Decorator{

  public Camera(IUsb usb){

         super(usb);

  }

 

  public void takePicture(){

         System.out.println("照相...");

  }

}

 

public class TestDecorator{

  public static void main(String[] args){

         IUsb mp3player = new MP3Player();  //只能读写数据的mp3

         MusicPlayer player = new MusicPlayer(mp3player) //装饰音乐播放

         player.readData();

         player.writeData();

         player.playMusic();  //具有播放音乐的功能

 

         Camera mp3Carm = new Camera(player);

         mp3Carm.takePicture(); //具有照相的功能

  }

}

原创粉丝点击