zoukankan      html  css  js  c++  java
  • 代理模式

    代理模式

    一、介绍

          A要做某事,但是不方便去做,所以让B去做,这就是最简单的代理模式。

    二、例子

          在这个例子中我们将建立三个类,一个抽象类(定义A想要做的事情),一个真实类(就是A啦),一个代理类(就是角色为Proxy的B)。

    1.抽象类

    public abstract class Subject {
    
        //A想要做的事情
        public abstract void Request();
    }

    2.真实类(A)

    package Proxy;
    
    public class RealSubject extends Subject{
    
        @Override
        public void Request() {
            // TODO Auto-generated method stub
            System.out.println("真实的请求");
        }
    
    }

    3.代理类(B)

    package Proxy;
    
    public class Proxy extends Subject{
    
    //真实类 RealSubject realSubject ; @Override
    public void Request() { // TODO Auto-generated method stub if(realSubject == null){
    //如果真实类不存在,则创建一个真实类 realSubject
    = new RealSubject(); } //在代理类中执行真实类的请求 realSubject.Request(); } }

    三.代理模式的应用

    1.远程代理:就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。

    2.虚拟代理:根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象。这样子就可以达到性能的最优化,比如你打开一个很大的html页面,里面有很多是文字和图片,但是我们能很快的打开。原因是我们看到的所有的文字优先下载,然后在将图片一张一张地下载。那些未下载的图片先用图片库来代替,此时的虚拟代理就是通过图片库来代理图片。

    3.安全代理:用来控制真实对象访问时的权限。一般用于对象应有不同的访问权限的时候。

    4.智能代理:当调用真实对象时,代理处理另外一些事。 

  • 相关阅读:
    文件目录T位
    改变文件权限的用户身份
    改变进程打开文件默认权限检查方式
    新建文件的UID和GID
    进程的用户ID
    centos7使用无线wifi连接
    2.8. 创建 NSManagedObject 的子类 (Core Data 应用程序实践指南)
    2.7. 属性的各种设置选项(Core Data 应用程序实践指南)
    2.6. 类型(Core Data 应用程序实践指南)
    2.5. Integer 16 、Integer 32、Integer 64(Core Data 应用程序实践指南)
  • 原文地址:https://www.cnblogs.com/kgrdomore/p/4243396.html
Copyright © 2011-2022 走看看