• 代理模式——java设计模式


    代理模式(Proxy Pattern)

    GoF中给出的代理模式的定义为:
    代理模式给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。
    代理模式的英文叫做Proxy或Surrogate,它是一种对象结构型模式。
    代理模式根据其目的和实现可分为很多种类,常用的代理模式包括如下几种:
    (1)远程代理(Remote Proxy)————为一个位于不同的地址空间的对象提供一个本地的代理对象,这个不同的地址空间可以是在同一台主机中,也可以是在另一台主机中,远程代理又称为大使(Ambassador)
    (2)虚拟代理(Virtual Proxy)————如果需要创建一个资源消耗较大的对象,先创建一个消耗相对较小的对象来表示,真实对象只在需要时才会被真正创建。
    (3)保护代理(Protect Proxy)————控制一个目标操作的结果提供临时的存储空间,以便多个客户端可以共享这些结果。
    (4)缓冲代理(Cache Proxy)————为某一个目标操作的结果提供临时的存储空间,以便多个客户端可以共享这些结果。
    (5)只能引用代理(Smart Reference Proxy)————当一个对象被引用时,提供一些额外的操作,例如将对象被调用的次数记录下来。

    代码实现:
    1.抽象主题类——BuyTicket.java

    public interface BuyTicket {
        public void showticket();
    }
    

    2.具体主题类——Train.java

    public class Train implements BuyTicket {
        @Override
        public void showticket() {
            System.out.println("one ticket");
        }
    }
    

    3.代理角色类——TicketCenter.java

    public class TicketCenter implements BuyTicket {
        private BuyTicket ticket;
    
        public TicketCenter(BuyTicket ticket) {
            this.ticket = ticket;
        }
    
        @Override
        public void showticket() {
            ticket.showticket();
        }
    
        public void buy() {
            System.out.println("by proxy");
            showticket();
        }
    }
    

    4.客户端测试类

    public class ProxyPattern {
        public static void main(String args[]) {
            BuyTicket x = new Train();
            TicketCenter y = new TicketCenter(x);
            y.buy();
        }
    }
    

    运行结果:

    by proxy
    one ticket
    
  • 相关阅读:
    深入了解CSS字体度量,行高和vertical-align
    解决ios手机上传竖拍照片旋转90度问题
    HTML5图片上传本地预览
    前端本地文件操作与上传
    前端基础进阶(一):内存空间详细图解
    js小知识-数组去重
    SQL Server物化视图学习笔记
    MindMaster学习笔记
    c#Lock学习笔记
    oauth2.0学习笔记(摘抄简化)
  • 原文地址:https://www.cnblogs.com/w1570631036/p/6819822.html
Copyright © 2020-2023  润新知