代理:通俗的来讲就是A要做一件事情,让B代替他来做相关的事情,但是主角还是A。
Java中静态代理的三要素:
1. 接口(规范)
2. 主角类:实现接口
3. 代理类:实现接口
干货:
首先是接口:相当于业务主体,今天的干货以杀人为主体
public interface IKill { public abstract void killSomeone(String targetName); }
其次是主角登场:今天的主角是一名职业杀手
public class Killer implements IKill { @Override public void killSomeone(String targetName) { // TODO Auto-generated method stub System.out.println("I am a killer. I've killed "+targetName); } }
最后是我们的杀手中介(也就是代理)
public class KillerAgent implements IKill { private IKill kill; public KillerAgent(IKill kill){ this.kill = kill; } void findTarget(){ System.out.println("agent:寻找击杀对象"); } @Override public void killSomeone(String targetName) { findTarget(); this.kill.killSomeone(targetName); escape(); } void escape(){ System.out.println("agent:分钱,帮助杀手逃跑"); } }
主题接口代码很简单,就是个普通的接口。
主角类也不复杂,就是针对主体做自己该做的事情。
代理类相对复杂点,虽然实现了主题接口,但是它没有做核心的事情,只是帮助了主角更好的完成事情。
测试代码:
public static void main(String[] args) { IKill kill = new Killer(); KillerAgent ka = new KillerAgent(kill); ka.killSomeone("Jim"); }
相关推荐
在本篇Spring学习笔记中,我们将探讨静态代理模式在Spring框架中的应用与分析。静态代理是一种常见的设计模式,它在不修改目标类代码的情况下,通过代理类来扩展或增强目标类的功能。在Spring中,静态代理主要应用于...
代理简介,静态代理,动态代理,23种设计模式之一,拦截器在在流行的开源框架中很常见,依赖的技术就是Java的动态代理。 理解拦截器的核心原理对理解这些开源框架的体系结构至关重要。 下面以一个简单的模型的...
在静态代理中,定义一个接口或者父类,被代理对象和代理对象一起实现这个接口或者继承这个父类。在代理对象中,对被代理对象进行功能增强。 优点: * 可以做到不修改目标对象的功能前提下对目标功能进行扩展 * ...
在Java中,静态代理和动态代理(如Java的InvocationHandler接口)是常见的实现方式。 8. 开发DispatcherServlet工具类:DispatcherServlet是Spring MVC的核心组件,负责接收请求并分发到相应的处理器。笔记可能讲解...
Java多线程 基础学习笔记 / 学习静态代理模式-附件资源
本笔记将深入探讨Django的基础概念、核心功能以及实际应用。 1. **Django简介**: Django是由两位美国开发者在2005年创建的开源项目,它遵循MVC(模型-视图-控制器)设计模式,但更倾向于MTV(模型-模板-视图)...
这篇笔记可能详细解析了Spring如何实现静态代理以及动态代理,下面将对这两个知识点进行深入探讨。 首先,我们要理解代理模式的基本原理。代理模式是一种设计模式,它为一个对象提供一个代理以控制对该对象的访问。...
Spring学习笔记Spring spring的配置 IOC 依赖注入 基于Xml的注入 基于注释的注入 ... 静态代理 动态代理 使用spring实现AOP 基于Annotation实现AOP 基于XML实现AOP SSH的整合 spring集成jdbc
1. **语法结构**:Java是一种静态类型的、面向对象的语言,其语法与C++类似,但更为简洁。包括变量声明、数据类型(如整型、浮点型、字符型、布尔型等)、运算符、流程控制(如if-else、switch、for、while循环)等...
Java提供了两种主要的代理实现方式:静态代理和动态代理。 ### 静态代理 在静态代理中,我们需要为原始对象创建一个显式的代理类。代理类实现了与原始对象相同的接口,并在调用实际方法之前或之后添加额外的行为。...
Nginx以其事件驱动的异步非阻塞模型在处理静态文件、反向代理、负载均衡等方面表现出色。 **安装与配置** 在Linux系统中,通常通过包管理器(如apt-get或yum)进行Nginx的安装。安装完成后,Nginx的主配置文件位于...
无线路由器的配置流程相对直观,以D-Link624+A型号为例,只需通过浏览器访问192.168.0.1地址,便可进入路由器的管理界面,根据具体网络环境(如PPPoE拨号、静态IP等)进行设置。详细的配置步骤可参照路由器附带的...
首先,Nginx是一款高性能的HTTP和反向代理服务器,广泛用于网站的负载均衡和静态资源服务。它的事件驱动模型和非阻塞I/O机制使其在处理高并发请求时表现出色。运维人员学习Nginx能够掌握如何配置服务器、实现负载...
这个“Nginx学习笔记.zip”压缩包文件包含了一系列关于Nginx的教程资源,分别命名为“第1节课”到“第5节课”,暗示着一个逐步深入的学习过程。 在第一节课中,我们通常会了解Nginx的基本概念和安装步骤。Nginx的...
作为一款反向代理服务器,Nginx 不仅能提供静态文件服务,还能进行动态请求的转发,实现负载均衡,以及隐藏真实服务器地址等功能。 **1. 反向代理** 反向代理是 Nginx 的核心特性之一。客户端发送请求到 Nginx 代理...
5. 接口与内部类:理解接口的实现,静态内部类,匿名内部类,以及成员内部类的应用。 三、集合框架 1. List、Set和Queue:比较ArrayList、LinkedList、HashSet、TreeSet等集合的特性和使用场景。 2. Map接口:熟悉...
本学习笔记将深入探讨Nginx的核心概念、安装与配置、反向代理、负载均衡、缓存管理以及日志记录等多个方面,旨在帮助读者全面掌握Nginx的使用技巧。 **一、Nginx核心概念** 1. **事件模型**:Nginx采用异步非阻塞...
在Web应用程序中,Nginx 常用于静态文件的托管和反向代理,将请求分发到多个后端服务器,实现负载均衡,提高系统可用性和响应速度。 【Spring】 Spring 是一个全面的企业级应用开发框架,它简化了Java EE开发,通过...
Java中可以通过静态代理和动态代理(JDK或CGLIB)实现。笔记可能详细描述了代理的生成和调用流程。 6. **适配器模式**:将一个类的接口转换成客户希望的另一个接口。在Java中,适配器可以是类或接口的形态。源码...