有三种方法可以增强对象:
1,继承
特点:被增强的对象是固定的,增强的内容也是固定的。
使用继承会使类增多。
2,装饰者模式:是你还有你,一切拜托你。
特点:被增强的对象是可以切换的,增强的内容是固定的
package com.wrapper.demo;
import java.io.IOException;
import java.io.InputStream;
public class Demo1 extends InputStream {//是你
private InputStream in;//还有你
private int key;
public Demo1(InputStream in,int key){
this.in=in;
this.key=key;
}
@Override
public int read() throws IOException {
return this.read()+key; //一切拜托你
}
}
上述代码也是一种加密解密的方式,通过将输入流进行装饰(使用key),输出到文件中后,就是加密的,需要使用反向解密方法对文件进行解密才能获取到原文件。3,动态代理
特点:被增强的对象是可以切换的(service),增强的内容也是可以切换的(事务处理)。