`

易学设计模式六 代理模式(Proxy)

阅读更多
代理模式(Proxy)为另一个对象提供一个替身或占位符以控制对这个对象的访问,简而言之就是用一个对象来代表另一个对象。




public abstract class Subject {
	abstract public void request();
}


public class RealSubject extends Subject {
	public void request() {
		System.out.println("From real subject");
	}
}


public class ProxySubject extends Subject {

	private RealSubject realSubject;
	
	public ProxySubject() {
		realSubject = new RealSubject();
	}
	
	public void request() {
		preRequest();
		realSubject.request(); //输出一次
		realSubject.request(); //输出二次
		postRequest();
	}
	
	public void preRequest() {
		System.out.print("before request");
	}
	
	public void postRequest() {
		System.out.println("after request");
	}
}


public class Client {
	public static void main(String[] args) {
		Subject subject = new ProxySubject();
		subject.request();
	}
}


输出:

before requestFrom real subject
From real subject
after request

有个疑问:代理类里面输出两次才能打出真实类的一句语句,很怪,怪怪怪
  • 大小: 4.7 KB
分享到:
评论

相关推荐

    易学设计模式源码光盘

    "易学设计模式源码光盘" 提供了一种直观的学习方式,帮助初学者更轻松地理解和应用这些模式。这里我们将深入探讨设计模式的核心理念、主要分类以及一些常见设计模式的实现细节。 首先,设计模式的出现源于对软件...

    [源代码] 《易学 设计模式》 随书源代码

    《易学 设计模式》 郭志学 编著 随书源代码 ☆ 章节清单:☆ 第01章 欲速则不达:了解设计模式 第02章 磨刀不误砍柴工:UML语言概述 第03章 术业有专攻:简单工厂模式 (SimpleFactory) 第04章 精益求精:工厂方法...

    java-易学设计模式

    "java-易学设计模式"这个压缩包很可能是包含了一些关于Java设计模式的示例源代码,方便学习者理解和掌握。 首先,我们来讨论一下设计模式的基本分类。设计模式分为三类:创建型模式、结构型模式和行为型模式。 1. ...

    设计模式例子文档,简单易学

    这份名为"设计模式例子文档,简单易学"的资源,显然是为了帮助开发者更直观、更快速地理解和应用设计模式。设计模式并非具体的代码或库,而是一种通用的解决方案模板,可以在不同的软件开发过程中复用,以提高代码的...

    介绍设计模式的代码

    在“易学设计模式代码”这个压缩包中,你将找到这些模式的Java实现示例。通过阅读和分析这些代码,你可以更好地理解每种模式的核心思想,以及如何在实际项目中应用它们。同时,虽然这里的示例是基于Java,但设计模式...

    易语言源码易语言匿名代理测试源码.rar

    3. **代理设置**:在源码中,需要设定代理服务器的IP地址和端口号,以及是否启用匿名模式。 4. **响应检测**:测试匿名代理的效率和效果,需要分析从代理服务器返回的响应,判断是否成功连接,以及匿名级别(高匿名...

    34课 VueJS-跨域_骨架屏插件、预渲染、多页应用.rar

    3. 代理服务器:通过在开发环境中设置代理服务器,将API请求转发到实际的后端服务,例如在VueCLI中配置webpack的proxyTable。 4. window.postMessage:通过在父窗口和子窗口之间传递消息来实现跨域通信。 二、骨架...

    宏志20班.doc

    MVVM(Model-View-ViewModel)模式是前端开发中的设计模式,Vue就是基于此模式的框架。它通过ViewModel作为桥梁,实现了View和Model之间的双向绑定,降低了View和Model的耦合度。 Vue是一个渐进式的JavaScript框架...

    【211104】Vue3.0时代开启,三部曲彻底搞定前端项目开发.zip

    这包括对Vue生命周期的理解,组件设计模式,性能优化策略,错误排查和调试,以及前端工程化和前端安全等方面的知识。通过这部分的学习,开发者可以更好地准备面试,提高自己在职场中的竞争力。 总的来说,Vue3.0...

    SpringMVC+Mybatis学习笔记

    - **AOP代理(AOP Proxy)**:AOP框架创建的代理对象,用于实现对目标对象的增强。 Spring的AOP支持基于XML配置或注解的方式实现,如`@Aspect`、`@Before`、`@After`等。它可以在运行时动态生成代理对象,对目标...

    Linux 系统运维之系统架构

    Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在高并发连接方面表现优秀。安装Nginx可以通过源码安装或者使用包管理工具安装。 **3.2 MySQL客户端安装** MySQL是关系型数据库...

    VUE面试.pdf

    - **简单易学**:其API设计直观,学习曲线平缓,开发者能快速上手。 - **低耦合**:组件化的设计使得代码结构清晰,易于维护。 - **可重用性**:组件可以复用,提高开发效率。 - **独立开发**:Vue 可以单独使用...

    2023新整理VUE面试题-15题,附带答案

    Vue.js 是一款流行的前端JavaScript框架,以其简单易学、高效灵活的特点受到开发者喜爱。以下是针对提供的Vue面试题的详细解答: 1. **Vue.js 的核心概念** - **Vue.js** 是一个轻量级的渐进式框架,设计用于构建...

    mini-vue:迷你台

    通过研究mini-vue的源码,开发者不仅可以提升对Vue.js的理解,还能学习到JavaScript语言的高级特性和设计模式。对于想要深入Vue生态或有意自行构建类似框架的人来说,mini-vue是一个极好的起点。 总结来说,mini-...

Global site tag (gtag.js) - Google Analytics