装饰者模式,又称装饰器模式。指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。简单的来说,其实是基于继承所展开的扩展,不过使用了递归的方法。
装饰者模式可以使得子类更加灵活,可以在不想添加更多子类时使用,可以动态的添加或者删除功能,就像游戏里面的插件一样,基于游戏本身增添各种mod、材质包等。装饰者模式可以独立发展,不用相互耦合。与此同时,装饰者模式也遵循了开放关闭原则(类应该对扩展开放,对修改关闭。)
这种模式也有缺点,多层结构会让程序变得复杂。虽然比起继承会产生更少的类,但是会产生比继承更多的对象会使程序查错变得困难
关于应用:在JAVA IO流中需要很多性能的各种组合,为了避免出现大量重复的类,因此装饰者模式是 JAVA I/O库的基本设计模式。
可以根据下面的文章对装饰器模式进行更深一步理解: