黑马程序员技术交流社区

标题: 【南京校区】常见的设计模式--代理模式(Proxy 静态代理) [打印本页]

作者: 大蓝鲸Java    时间: 2017-12-29 10:11
标题: 【南京校区】常见的设计模式--代理模式(Proxy 静态代理)
为其他对象提供一种代理以控制对这个对象的访问
       
        具体代码设计
        1.定义一个接口
        /**
         * 创建一个共用接口
         */
        public interface Subject {
                public void request();
        }

        2.创建一个被代理的实体
        /**
         * 定义一个实体类,这个类将会被Proxy类代理
         */
        public class RealSubject implements Subject {
       
                @Override
                public void request() {
                        System.out.println(this.getClass().getSimpleName() + "真实的请求");
                }
        }

        3.创建一个代理实体
        /**
         * 创建一个代理类,去代理RealSubject
         */
        public class Proxy implements Subject {
                private RealSubject realSubject;
       
                @Override
                public void request() {
                        if (realSubject == null) {
                                realSubject = new RealSubject();
                        }
                        realSubject.request();
                }
        }

        4.创建一个测试类
        public class Test {
                public static void main(String[] args) {
                        Proxy proxy = new Proxy();
                        //调用Proxy对象中方法,实际调用的是RealSubject类中的方法
                        proxy.request();
                }
        }

        静态代理总结:
    代理对象需要与目标对象实现一样的接口,一旦接口增加方法,目标对象与代理对象都要维护.
       
        如何解决静态代理中的缺点呢?答案是可以使用动态代理方式


##代理模式和装饰者模式区别

        1.两种模式的定义
        代理模式:为其他对象提供一种代理以控制对这个对象的访问
        装饰者模式:动态地给一个对象添加一些额外的职能

        2.代理模式注重的是隔离限制,让外部不能访问你实际的调用对象.
          装饰模式注重的是功能的拓展,在同一个方法下实现更多的功能。

       




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2