代理模式

代理模式(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 proxyone ticket

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码生

django 学习笔记三

拦截到url 后,通过拦截到的URL和 request 做一些不同的响应(response)

982
来自专栏python学习路

八、线程和进程 什么是线程(thread)?什么是进程(process)? 线程和进程的区别?Python GIL(Global Interpreter Lock)全局解释器锁

什么是线程(thread)? 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一...

4197
来自专栏Java帮帮-微信公众号-技术文章全总结

01.线程状态/创建/启动

01.线程状态/创建/启动 多线程作为Java中很重要的一个知识点,在此还是有必要总结一下的。 一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,...

3917
来自专栏JavaQ

Java多线程编程笔记之多线程技能

1.进程和线程的概念及线程的优点 进程是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的一个独立单位。 线程可以理解成是进程中独立运行的子任务。 线程...

3277
来自专栏三木的博客

Linux shell 程序设计2——bash的内置命令

常用的内置命令忽略,来看看shell编程中其他一些重要的内置命令: 1、help:显示所有内置命令列表,或显示一个具体命令的用法。 -s: 表示列出命令的语法...

2016
来自专栏北京马哥教育

Python黑科技 | Python中四种运行其他程序的方式

在Python中,可以方便地使用os模块来运行其他脚本或者程序,这样就可以在脚本中直接使用其他脚本或程序提供的功能,而不必再次编写实现该功能的代码。为了更好地控...

50612
来自专栏Python中文社区

用Python实现微信接口(一)

專 欄 ❈爱撒谎的男孩,Python中文社区专栏作者 博客:https://chenjiabing666.github.io ❈ 安装 sudo pip in...

3526
来自专栏Python专栏

Python | 四种运行其他程序的黑科技

在Python中,可以方便地使用os模块来运行其他脚本或者程序,这样就可以在脚本中直接使用其他脚本或程序提供的功能,而不必再次编写实现该功能的代码。

2092
来自专栏互扯程序

java多线程-概念&创建启动&中断&守护线程&优先级&线程状态

在现代操作在运行一个程序时,会为其创建一个进程。例如启动一个QQ程序,操作系统就会为其创建一个进程。而操作系统中调度的最小单位元是线程,也叫轻量级进程,在一个进...

1273
来自专栏自动化测试实战

flask第34篇——测试器、模板继承

http://jinja.pocoo.org/docs/2.10/templates/#list-of-builtin-tests

812

扫码关注云+社区