设计模式(5):装饰器模式

146 阅读1分钟

装饰器模式

定义

装饰器模式是一种动态地往一个类中添加新的行为的设计模式。就功能而言,修饰模式相比生成子类更为灵活,这样可以给某个对象而不是整个类添加一些功能。

一般来说,我们想给某个类或者对象添加行为有两种方式:继承方式,组合方式。装饰器模式使用的是组合方式。

简单地说,就是在装饰器中添加一个产品对象,这样就相当于拥有了这个产品的功能,然后在此基础上定义新的方法以达到扩展的目的。

示例和代码

//定义产品接口
interface Phone {
    void playMusic();
}

//定义实现类
class iPhone implements Phone {
    
    @override
    public void playMusic() {
        ...
    }
}

//定义装饰器
class PhoneDecorator implements Phone {
    private Phone phone;
    
    public PhoneDecorator(Phone phone) {
        this.phone = phone;
    }
    
    @override
    public void playMusic() {
        phone.playMusic();
    }
    
    //新功能
    public void playGame() {
        ...
    }
}

//使用
class Main {
    public static void main(String[] args) {
        new PhoneDecorator(new iPhone()).playGames();
    }
}

Java的IO中大量用到了装饰器模式。

总结

装饰器模式是动态地给一个对象添加新功能,相比于继承并生成子类的方式来说,这样会更加灵活。