zoukankan      html  css  js  c++  java
  • 代理(Proxy)模式简介

    一、代理(Proxy)模式简介

    代理模式是结构型模式。

    代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。

    代理对象要继承于抽象主题,并控制原对象的引用

    二、简单例子

    抽象主题类

    package proxy;
    /*
     * 抽象主题
     */
    public abstract class Subject {
    /*
     * 请求方法
     */
        abstract public void Request();
    }

    真实主题类,继承抽象

    package proxy;
    /*
     * 真实主题
     */
    public class RealSubject extends Subject {
    
        @Override
        public void Request() {
            System.out.println("真实主题实现请求!");
    
        }
    
    }

    代理主题

    package proxy;
    /*
     * 代理主题
     */
    public class ProxySubject extends Subject {
        private RealSubject realSubject;
        @Override
        public void Request() {
            //请求前代理主题自己的操作
            preRequest();
            //判断是否为空
            if(realSubject==null){
                //实例化
                realSubject=new RealSubject();
            }
            //调用真实主题的响应方法
            realSubject.Request();
            //请求后代理主题自己的操作
            postRequest();
        }
        private void preRequest(){
            System.out.println("请求前代理主题自己的操作!");
        }
        
        private void postRequest(){
            System.out.println("请求后代理主题自己的操作!");
        }
    
    }

    测试类

    package proxy;
    /*
     * 代理主题测试类
     */
    public class Test {
    
        public static void main(String[] args) {
            //声明抽象主题,并实例化为代理主题
            Subject subject=new ProxySubject();
            //调用代理主题的响应方法
            subject.Request();
    
        }
    
    }

    结果:

    请求前代理主题自己的操作!
    真实主题实现请求!
    请求后代理主题自己的操作!
  • 相关阅读:
    xib中Autolayout的使用
    duplicate symbol _gestureMinimumTranslation in:
    oracle数字字符串是否有非法数字
    ora-01536 space quota exceeded for tablespace
    Linux core 文件(二)
    Linux core 文件(一)
    完全卸载oracle11g步骤
    oracle11gr2 for windows 32-bit win7安装与卸载
    Oracle的几个概念:数据库名,全局数据库名,SID,实例,命名空间,schema
    cut 字符截取命令
  • 原文地址:https://www.cnblogs.com/liunanjava/p/4352329.html
Copyright © 2011-2022 走看看