代理模式指的是通过代理对象访问目标对象。这样做的好处是可以在目标基础上实现更多的功能。比如维护的时候不好改别人的代码,那么就用代理模式来扩展目标对象的方法。
那么代理者怎么知道目标对象都有哪些功能呢? 很简单,跟目标对象实现共同的接口,这样你有的,我都有,只不过我不实现,具体的实现是目标对象来完成。
/**
* @description: 定义书籍
* @author: dai
* @create date: 2018/3/28
*/
public interface Book {
void read();
}
/**
* @description: 呵呵书籍
* @author: dai
* @create date: 2018/3/28
* @update date: 2018/3/28
* @update description:
*/
public class HHBook implements Book{
@Override
public void read() {
System.out.println("呵呵书籍的内容");
}
}
/**
* @description: YY小说
* @author: dai
* @create date: 2018/3/28
* @update date: 2018/3/28
* @update description:
*/
public class YYBook implements Book{
@Override
public void read() {
System.out.println("YY小说来了.");
}
}
/**
* @description:这个就是代理类,根据传进来的 目标对象不同,具体的实现不同,同时有自己的扩展方法。
* @author: dai
* @create date: 2018/3/28
*/
public class HHProxy implements Book {
private Book mHHBook;
public HHProxy(Book HHBook) {
mHHBook = HHBook;
}
@Override
public void read() {
mHHBook.read();
}
/**
* 额外写功能
*/
public void write(){
System.out.println("看到尽兴,我还能自己YY写点。");
}
}
以上一个简单的代理模式就搭建好了,这种代理被称为静态代理。
网友评论