设计模式--装饰模式
来源:互联网 发布:Java 日志 不需要判断 编辑:程序博客网 时间:2024/04/29 22:36
设计模式--装饰模式
装饰模式,动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。
M(超级玛丽)
--------------------------
普通继承模式实现
A 发镖 能组合出七种功能 M1: A M4:A B
B 变身 M2: B M5:A C
C 无敌 M3: C M6:B C M7:A B
---------------------------
M
|--M1 A B 组合方法 : new M2(M1)
|--M2 A C 组合方法 : new M3(M1)
|--M3 B C 组合方法 : new M3(M2)
A B C组合方法: new M3(M2(M1))
====================================
IUsb(接口,其功能为读数据与写数据)
|--UDisk(类 继承IUsb,其方法只有读写数据)
|--MP3Player(类 继承IUsb,其方法只有读写数据)
|--Decorator(IUsb iusb)
|--MusicPlayer(IUsb usb)
|--Camera(IUsb usb)
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(); //具有照相的功能
}
}
在此程序中反复用到了抽象类、接口、继承及覆盖,而对此又有了新的深入见解。
- 设计模式---装饰模式
- 设计模式:装饰模式
- 设计模式------装饰模式
- 设计模式--装饰模式
- 设计模式--装饰模式
- 设计模式--装饰模式
- 设计模式 装饰模式
- 设计模式----装饰模式
- 设计模式-【装饰模式】
- 设计模式--装饰模式
- 设计模式装饰模式
- 设计模式 - 装饰模式
- 设计模式-----装饰模式.
- 设计模式-----装饰模式.
- [ 设计模式 ] 装饰模式!
- 设计模式:装饰模式
- 设计模式 - 装饰模式
- 设计模式 - 装饰模式
- nRF24L01 AVR 发送接收驱动程序
- 图的邻接表存储以及相关操作 C语言
- (Java复习与IO输入输出流)
- nRF24L01 MSP430 发送接收驱动程序
- 函数指针数组的使用(简单)
- 设计模式--装饰模式
- MTK平台屏幕切换机制探索--group机制(11A版本)
- 运算符
- 解题笔记(36)——最大公约数问题
- 对象序列化与随机文件
- 浅谈Android开机启动速度优化(含应用程序启动速度优化)
- C#程序发布(之后即可在其他电脑上运行)
- php调用mysql存储过程返回结果集的处理
- poj 1019 Number Sequence