设计模式学习之代理模式

代理模式指的是通过代理对象访问目标对象。这样做的好处是可以在目标基础上实现更多的功能。比如维护的时候不好改别人的代码,那么就用代理模式来扩展目标对象的方法。

那么代理者怎么知道目标对象都有哪些功能呢? 很简单,跟目标对象实现共同的接口,这样你有的,我都有,只不过我不实现,具体的实现是目标对象来完成。

/**

* @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写点。");

}

}

以上一个简单的代理模式就搭建好了,这种代理被称为静态代理。

你可能感兴趣的:(设计模式学习之代理模式)