装饰模式简介

来源:互联网 发布:手机淘宝怎么代购 编辑:程序博客网 时间:2024/06/08 17:16

1)装饰模式定义

动态的给一个对象添加一些额外的职责


2)应用装饰模式来解决的思路
透明的给一个对象增加功能,换句话说就是要给一个对象增加功能,但是不能让这个对象知道,也就是不能去改动这个对象。而实现了能够给一个对象透明的增加功能,自然就能够实现功能的动态组合,比如原来的对象有A功能,现在透明的给它增加了一个B功能,是不是就相当于动态组合了AB功能呢。
在装饰模式的实现中,为了能够和原来使用被装饰对象的代码实现无缝结合,是通过定义一个抽象类,让这个类实现与被装饰对象相同的接口,然后在具体实现类里面,转调被装饰的对象,在转调的前后添加新的功能,这就实现了给被装饰对象增加功能,这个思路跟对象组合非常类似。在转调的时候,如果觉得被装饰的对象的功能不再需要了,还可以直接替换掉,也就是不再转调,而是在装饰对象里面完全全新的实现。

代码示例:


public interface Person{public void sayMsg();}//需要被装饰的对象public class Student implements Person{public void sayMsg(){System.out.println("Helloeveryone!");}} ////装饰器,实现相同的接口public class Decorator implements Person{//反调需要装饰的对象private Person person;public Decorator(Person person){this.person=person;}public void sayMsg(){//增加额外功能System.out.println("先记一下日志");person.sayMsg();System.out.println("然后再记录");}}//测试public class Test{public static void main(String[]args){Person student=new Decorator(new Student());//student=new Decorator(student);student.sayMsg();}}


0 0