博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java静态代理模式
阅读量:4112 次
发布时间:2019-05-25

本文共 1117 字,大约阅读时间需要 3 分钟。

代理模式定义如下:

其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

 

代理模式的三种角色:

抽象角色(一般采用抽象类或者接口)

真实角色(抽象角色的具体实现,具体实现)

代理角色(具体对外干活的)

 

场景概述如下:

图书包括图书名称和出版社,但是我们在获取这两个值的时候都会事先知道他的价格,当获取其两个属性之后我们会考虑是否阅读。

 

Java静态代理的实现:

抽象角色:

public interface IBook {	String getBookName();	String getBookPress();}

实现角色:

public class JavaBook implements IBook {	@Override	public String getBookName() {		return "Java 程序设计";	}	@Override	public String getBookPress() {		return "上海科学出版社";	}}

代理角色:

public class ProxyBook implements IBook {	private IBook book = null;	public ProxyBook(IBook book) {		super();		this.book = book;	}	@Override	public String getBookName() {		System.out.println("获取图书价格成功");		String bookName = book.getBookName();		System.out.println("后续可以阅读");		return bookName;	}	@Override	public String getBookPress() {		System.out.println("获取图书价格成功");		String bookPress = book.getBookPress();		System.out.println("后续可以阅读");		return bookPress;	}}

 

测试代码:

public static void main(String[] args) {	IBook book = new ProxyBook(new JavaBook());	book.getBookName();	book.getBookPress();}

 

发现问题:

1.抽象角色的行为发生变化的时候就需要重新写代理类的实现了

 

 

转载地址:http://tnqsi.baihongyu.com/

你可能感兴趣的文章
MFC矩阵运算
查看>>
ubuntu 安装mysql
查看>>
c# 计算器
查看>>
C# 简单的矩阵运算
查看>>
gcc 常用选项详解
查看>>
c++输出文件流ofstream用法详解
查看>>
firewalld的基本使用
查看>>
Linux下SVN客户端使用教程
查看>>
Linux分区方案
查看>>
nc 命令详解
查看>>
如何使用 systemd 中的定时器
查看>>
git命令速查表
查看>>
linux进程监控和自动重启的简单实现
查看>>
OpenFeign学习(三):OpenFeign配置生成代理对象
查看>>
OpenFeign学习(四):OpenFeign的方法同步请求执行
查看>>
OpenFeign学习(五):OpenFeign请求结果处理及重试控制
查看>>
OpenFeign学习(六):OpenFign进行表单提交参数或传输文件
查看>>
OpenFeign学习(七):Spring Cloud OpenFeign的使用
查看>>
Ribbon 学习(二):Spring Cloud Ribbon 加载配置原理
查看>>
Ribbon 学习(三):RestTemplate 请求负载流程解析
查看>>