装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
功能本质不变,增加额外的功能。没有继承关系,降低耦合,实际功能还是被装饰类来实现。java io 流就采用装饰模式。
demo实例:
基类:Phone
/*以前的手机打电话,叮铃铃...*/ public class Phone { public void call(){ System.out.println("打电话..."); } }
装饰类:SongPhone
/*现在手机打电话可以听到彩铃*/ public class SongPhone { private Phone phone; public SongPhone(Phone phone) { this.phone = phone; } public void call(){ System.out.println("我在仰望,月亮之上~~"); phone.call(); } }
测试类:Person
public class Person { public static void main(String[] args) { SongPhone songPhone = new SongPhone(new Phone()); songPhone.call(); } }
测试结果:
我在仰望,月亮之上~~
打电话...