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();
    
        }
    
    }

    结果:

    请求前代理主题自己的操作!
    真实主题实现请求!
    请求后代理主题自己的操作!
  • 相关阅读:
    用Asp获取Dll加密新闻内容
    Silverlight编译范围
    c++连接mssql
    委托理解
    NClass,终于找到了可以绘制类图的工具了!
    RIATasks: A Simple Silverlight CRUD Example (using View Model)
    PetaPoco使用
    匿名方法,Action,Func以及lambda的区别
    第一个c++
    System.Threading中Thread和Task区别
  • 原文地址:https://www.cnblogs.com/liunanjava/p/4352329.html
Copyright © 2011-2022 走看看