设计模式之装饰器模式

设计模式之装饰器模式

    装饰器模式是一种动态地向一个类添加新的行为的一种设计模式,就功能而言,装饰器模式相比生成子类更为灵活。它是作为现有的类的一个包装。

    用处:当你想要在不想增加很多子类的情况下可以使用此模式来扩展。

    优点:装饰类和被装饰类可以独立发展,不会相互耦合。装饰器模式可以动态扩展一个实现类的功能。
    缺点:多层装饰会比较复杂。

举一个新老版本播放器的的小例子:
//  创建一个接口 Player 
public interface Player {
    public abstract void playFormat();
}
/**
*   创建实现接口的实体类。
*   ‘旧版的播放器类’
*/
public class OldPlayer implements Player {
    @Override
    public void playFormat() {
        //相应的功能处理  
        System.out.println("播放avi格式");
    }
}
/**
*   创建实现了 Player 接口的抽象装饰类。
*   ‘新版的播放器类’
*/
public class Newplayer implements Player {
    //持有 Player 对象
    public Player player;
    /**
    *    构造方法,传入 Player 对象
    *    @param player
    */
    public Newplayer(Player player) {
        this.player = player;
    }

    @Override
    public void playFormat() {
        System.out.println("旧版本的播放器");
        player.playFormat();
        System.out.println("新版本的播放器");
        System.out.println("播放rmvb格式");
    }
}
/*
*   测试类
*/
public class PlayerTest {
    public static void main(String[] args) {
        //创建需要被装饰的原始对象
        Player p = new OldPlayer();  
        Player nPlayer = new Newplayer(p);  

        nPlayer.playFormat();  
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值