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

 时间:2026-02-15 09:31:19

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)

  • 设计模式之代理模式(Proxy)
  • java设计模式
  • java之动态代理 Dynamic Proxy
  • java设计模式之简单工厂模式
  • foxyproxy 如何设置
  • 热门搜索
    杭州旅游景点推荐 三山岛旅游 广西旅游景点介绍 黄山旅游景点介绍 汉源旅游景点 发现旅游 张家港旅游景点大全 柞水凤凰古镇旅游攻略 途风海外旅游网 贵港旅游景点大全