zoukankan      html  css  js  c++  java
  • Alamps学习设计模式之Proxy模式(一骑红尘妃子笑版)

     一、 Proxy模式定义:
    为其他对象提供一种代理以控制这个对象的访问。
    二、 模式解说
    Proxy
    代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层,这个访问层也叫代理。Proxy模式是最常见的模式,在我们生活中处处可见,例如我们买火车票不一定非要到火车站去买,可以到一些火车票的代售点去买。寄信不一定是自己去寄,可以把信委托给邮局,由邮局把信送到目的地,现实生活中还有很多这样的例子,就不一一列举了。
    三、 结构图
    Proxy
    模式结构图如下:
     
    四、 一个例子:杨贵妃传奇:一骑红尘妃子笑,无人知是荔枝来

    //杨贵妃传奇:一骑红尘妃子笑,无人知是荔枝来


    //事情 :杨贵妃想吃荔枝

    //杨贵妃传奇:一骑红尘妃子笑,无人知是荔枝来


    //事情 :杨贵妃想吃荔枝


    package org.fp.dp.proxy;

    //岭南:模拟Real& Proxy都要实现的那个接口Subject
    interface LinNan {
        public void productLiZhi();
    }

    //唐明皇:模拟代理类Proxy
    class KingTang implements LinNan {
        private LinNan lz;

        public KingTang(LinNan lz) {
            super();
            this.lz = lz;
        }

        
        @Override
        public void productLiZhi() {
            // TODO Auto-generated method stub
            System.out.println("国王派人去岭南拿荔枝来!");
            this.lz.productLiZhi();
        }
    }
    //杨贵妃:模拟真实主题类RealSubject
    class LadyYang implements LinNan {

        @Override
        public void productLiZhi() {
            // TODO Auto-generated method stub
            System.out.println("吃到荔枝咯... ,才说: 爱死你了,唐唐!");
        }
    }

    public class TheLegendOfLadyYang2 {
        public static void main(String args[]) {
            KingTang king = new KingTang(new LadyYang() );
            king.productLiZhi();
        }
        
    }
    /*国王派人去岭南拿荔枝来!
    吃到荔枝咯... ,才说: 爱死你了,唐唐!
    */
  • 相关阅读:
    APP 弱网测试可能会出现的bug
    Monkey 稳定性测试
    设计模式 策略模式
    设计模式 单例模式
    Linux常用命令(三)文件权限管理
    Linux常用命令(二)文件目录管理命令
    Linux常用命令(一)
    WSL安装yum报错:E: Unable to locate package yum
    使用LxRunOffline迁移WSL
    关于PyQt5 setPalette 设置背景不生效问题
  • 原文地址:https://www.cnblogs.com/alamps/p/2517111.html
Copyright © 2011-2022 走看看