当前位置:首页 > CN2资讯 > 正文内容

Java - 静态代理java静态代理和动态代理

15小时前CN2资讯


代理的名词

代理对象:增强后的对象
目标对象:被增强的对象

Java代理-静态代理

静态代理包含继承和聚合两种。

1. 继承

代理对象继承目标对象,重写需要增强的方法。

public interface UserDao {
void query();
}import org.springframework.stereotype.Service;

@Service
public class UserDaoImpl implements UserDao {
@Override
public void query() {
System.out.println("query db");
}
}public class UserDaoLogImpl extends UserDaoImpl {
@Override
public void query() {
System.out.println("start to query");
super.query();
System.out.println("end to query");
}
}public class TestApp {
public static void main(String[] args) {
UserDaoImpl dao2 = new UserDaoLogImpl();
dao2.query();
}
}

`UserDaoLogImpl`是代理对象,`UserDaoImpl`是目标对象。
代理对象与目标对象时相对的,会根据情况发生变化。`UserDaoLogImpl`以后也会成为目标对象。

2. 聚合

import com.merckgroup.msizing.domain.service.UserDao;

public class UserDaoOperateImpl implements UserDao {
UserDao userDao;

public UserDaoOperateImpl(UserDao userDao) { // 装饰者模式
this.userDao = userDao;
}

@Override
public void query() {
System.out.println("operate - start to query");
userDao.query();
System.out.println("operate - end to query");
}
}public class TestApp {
public static void main(String[] args) {
UserDao targetUserDao = new UserDaoImpl();
UserDaoOperateImpl userDaoOperate = new UserDaoOperateImpl(targetUserDao);
userDaoOperate.query();
}
}

运行结果:

operate - start to query
query db
operate - end to query

添加时间代理

public class UserDaoTimeImpl implements UserDao {
UserDao userDao;

public UserDaoTimeImpl(UserDao userDao) { // 装饰者模式
this.userDao = userDao;
}

@Override
public void query() {
System.out.println("time - start to query");
userDao.query();
System.out.println("time - end to query");
}
}

案例

代理1:对日志代理。A
代理2:对操作代理。B
代理3:对时间代理。C

需求:实现对时间和操作的代理。
需求-方案1:采用链式继承,继承B时添加时间代理,继承C时添加操作代理。(继承)
需求-方案2:采用聚合方式

方案1:比较容易实现

方案2:实例代码

public class UserDaoTimeImpl implements UserDao {
UserDao userDao;

public UserDaoTimeImpl(UserDao userDao) { // 装饰者模式
this.userDao = userDao;
}

@Override
public void query() {
System.out.println("time - start to query");
userDao.query();
System.out.println("time - end to query");
}
}public class UserDaoOperateImpl implements UserDao {
UserDao userDao;

public UserDaoOperateImpl(UserDao userDao) { // 装饰者模式
this.userDao = userDao;
}

@Override
public void query() {
System.out.println("operate - start to query");
userDao.query();
System.out.println("operate - end to query");
}
}public class TestApp {
public static void main(String[] args) {
UserDao target = new UserDaoTimeImpl(new UserDaoImpl()); // 对时间
UserDao userDaoLog = new UserDaoOperateImpl(target); // 继而对操作
userDaoLog.query();
}
}

运行结果:

operate - start to query
time - start to query
query db
time - end to query
operate - end to query

结论:使用静态代理时会产生类,继而可能引发类爆炸(继承与聚合皆是如此)。因此,在不确定时尽量减少使用静态代理。

不确定情况:不明确后续的扩展情况,是否需要扩展接口或者扩展接口的程度如何。

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/24395.html

    分享给朋友:

    “Java - 静态代理java静态代理和动态代理” 的相关文章

    解决CloudCone IP被墙问题的有效方法与替代方案

    CloudCone IP被墙的背景 CloudCone是一家提供按小时计费的美国VPS服务商,其低廉的价格、SSD硬盘存储和CN2线路等优势,吸引了许多国内用户。作为一名曾经的CloudCone用户,我体会到其灵活的计费方式和稳定的性能确实能满足很多需求,特别是对于一些小型项目或者短期使用的开发者来...

    hncloud:助力企业数字化转型的云计算服务提供商

    在数字化浪潮席卷全球的今天,hncloud(华纳云)应运而生,成为一家备受瞩目的全球数据中心基础服务提供商。隶属于香港联合通讯国际有限公司的hncloud,凭借其在行业中的深厚积淀和技术实力,逐渐发展成为一颗闪耀于云计算领域的明星。作为APNIC和ARIN的会员单位,hncloud自有ASN号,为用...

    BT下载机的使用技巧与软件下载推荐

    在数字时代,文件共享变得越来越普遍,BT下载机作为一种基于BitTorrent协议的P2P(Peer-to-Peer)文件共享工具,扮演着重要的角色。我记得第一次接触BT下载机时,发现它的操作不仅简单,还能快速下载大型文件,这让我对它产生了浓厚的兴趣。BT下载机允许用户通过种子文件(.torrent...

    优化RackNerd DC2机房 IP使用体验与性能评测

    我最近对RackNerd的DC2机房产生了越来越多的兴趣,特别是位于美国洛杉矶的这座机房。它被誉为RackNerd中中国国内访问速度较快的机房之一,吸引了很多需求高效网络连接的用户。这座机房的地理位置确实蛮不错,靠近美西主干线,对于需要与国内建立连接的网站和应用来说,能带来相对更快的访问速度。 对于...

    VPS优惠活动解析:如何选择最划算的虚拟专用服务器方案

    在当今互联网环境中,VPS(虚拟专用服务器)为企业和个人用户提供了灵活、高效的解决方案。随着云计算的普及,VPS逐渐成为许多用户的首选。不管是建站、开发、还是日常的数据处理,选择一款合适的VPS至关重要。而在不同的VPS服务提供商中,优惠活动往往能让用户以更实惠的价格体验高质量的服务。 什么是VPS...

    探索锡考克斯:舒适的居住地与丰富的旅游体验

    锡考克斯(Secaucus)是一个坐落于新泽西州的小镇,距离繁华的纽约市仅有不到10公里的路程。这使得锡考克斯成为一个非常吸引人的居住地和旅游目的地。首先,锡考克斯的地理坐标是纬度40.782和经度-74.0676,位于北纬40°46′55″和西经74°4′3″之间。这种优越的地理位置无疑为它的经济...