欢迎来到天天文库
浏览记录
ID:40199688
大小:32.50 KB
页数:4页
时间:2019-07-25
《java设计模式-装饰模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、java设计模式-装饰模式Decorator装饰器,顾名思义,就是动态地给一个对象添加一些额外的职责,就好比为房子进行装修一样。因此,装饰器模式具有如下的特征:它必须具有一个装饰的对象。它必须拥有与被装饰对象相同的接口。它可以给被装饰对象添加额外的功能。用一句话总结就是:保持接口,增强性能。装饰器通过包装一个装饰对象来扩展其功能,而又不改变其接口,这实际上是基于对象的适配器模式的一种变种。它与对象的适配器模式的异同点如下。相同点:都拥有一个目标对象。不同点:适配器模式需要实现另外一个接口,而装饰器模式必须实现该对象的接口。Sourcable类的源代码如程序12-22所示,
2、其定义了一个接口函数operation()。程序12-22 源接口Sourcable.java(2)Source.jpackagedecorator;publicinterfaceSourcable{ publicvoidoperation();}Source是Sourcable.java的一个实现,其函数operation()负责往控制台输出一个字符串:原始类的方法。其源代码如程序12-23所示。程序12-23 源类Source.javapackagedecorator;publicclassSourceimplementsSourcable{publ
3、icvoidoperation(){ //TODOAuto-generatedmethodstub System.out.println("原始类的方法"); }}(3)装饰器类Decorator1.java采用了典型的对象适配器模式,它首先拥有一个Sourcable对象source,该对象通过构造函 数进行初始化。然后它实现了Sourcable.java接口,以期保持与source同样的接口,并在重写的operation()函数中调用 source的operation()函数,在调用
4、前后可以实现自己的输出,这就是装饰器所扩展的功能。其源代码如程序12-24所示。程序12-24 装饰器类Decorator1.javapackagedecorator;publicclassDecorator1implementsSourcable{privateSourcablesourcable; publicDecorator1(Sourcablesourcable){ super(); this.sourcable=sourcable; } publicvoidoperation(){
5、 System.out.println("第一个装饰器前"); sourcable.operation(); System.out.println("第一个装饰器后"); }}装饰器类Decorator2.java是另一个装饰器,不同的是它装饰的内容不一样,即输出了不同的字符串。其源代码如程序12-25所示。程序12-25 装饰器类Decorator2.javapackagedecorator;publicclassDecorator2implementsSourcable{privateSourcablesourcable
6、; publicDecorator2(Sourcablesourcable){ super(); this.sourcable=sourcable; } publicvoidoperation(){ System.out.println("第二个装饰器前"); sourcable.operation(); System.out.println("第二个装饰器后"); }}装饰器类Decorator1.java是第三个装饰器,不同的是它装饰的内容不一样,即输出了
7、不同的字符串。其源代码如程序12-26所示。程序12-26 装饰器类Decorator3.javapackagedecorator;publicclassDecorator3implementsSourcable{privateSourcablesourcable; publicDecorator3(Sourcablesourcable){ super(); this.sourcable=sourcable; } publicvoidoperation(){
此文档下载收益归作者所有