java设计模式之代理设计模式(Proxy)

2025-10-27 13:10:24

1、所谓的代理严格来讲就是两个子类共同实现一个接口,其中一个子类负责真实的业务实现,而另外的子类负责辅助真实业务主体的操作。

java设计模式之代理设计模式(Proxy)

2、现在我们实现代理设计模式,定义一个共同的主题接口:

interface ISubject {

      public void save(); //核心功能是救人

}

java设计模式之代理设计模式(Proxy)

3、核心实现实现这个主题接口:

class RealSubject implements ISubject {

        public void save() {

                System.out.println("真正的实现方法!");

        }

        

}

java设计模式之代理设计模式(Proxy)

4、代理实现主题接口:

class ProxySubject implements ISubject {

       

      private ISubject realSubject;

      public ProxySubject(ISubject subject) {

           this.realSubject = subject;

       }

        

        public void broke() {

                System.out.println("破门而入");

        }

        

        public void get() {

                System.out.println("得到奖励");

        }

        public void save() {

                this.broke();//真实操作前的准备

                

                this.realSubject.save();//调用真实的业务

                

                this.get();//操作后的首位

        }

        

}

java设计模式之代理设计模式(Proxy)

5、在main方法中调用代理调用来实现真实的业务调用。

package com.gwolf;

interface ISubject {

        public void save(); //核心功能是救人

}

class RealSubject implements ISubject {

        public void save() {

                System.out.println("真正的实现方法!");

        }

        

}

class ProxySubject implements ISubject {

        private ISubject realSubject;

        

        public ProxySubject(ISubject subject) {

                this.realSubject = subject;

        }

        

        public void broke() {

                System.out.println("破门而入");

        }

        

        public void get() {

                System.out.println("得到奖励");

        }

        public void save() {

                this.broke();//真实操作前的准备

                

                this.realSubject.save();//调用真实的业务

                

                this.get();//操作后的首位

        }

        

}

public class Proxy {

        public static void main(String[] args) {

                ISubject subject = new ProxySubject(new RealSubject());

                //通过代理类对象发出,利用代理类来实现真实的业务调用

                subject.save(); //救人的核心操作

        }

}

java设计模式之代理设计模式(Proxy)

6、为了实现代理对象和真实对象的解耦,我们使用工厂类来创造主题。

package com.gwolf;

interface ISubject {

        public void save(); //核心功能是救人

}

class RealSubject implements ISubject {

        public void save() {

                System.out.println("真正的实现方法!");

        }

        

}

class ProxySubject implements ISubject {

        private ISubject realSubject;

        

        public ProxySubject(ISubject subject) {

                this.realSubject = subject;

        }

        

        public void broke() {

                System.out.println("破门而入");

        }

        

        public void get() {

                System.out.println("得到奖励");

        }

        public void save() {

                this.broke();//真实操作前的准备

                

                this.realSubject.save();//调用真实的业务

                

                this.get();//操作后的首位

        }

        

}

class Factory {

        public static ISubject getInstance() {

                return new ProxySubject(new RealSubject());

        }

}

public class Proxy {

        public static void main(String[] args) {

                ISubject subject = Factory.getInstance();

                //通过代理类对象发出,利用代理类来实现真实的业务调用

                subject.save(); //救人的核心操作

        }

}

java设计模式之代理设计模式(Proxy)

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢