电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

詳解 Java靜態代理

瀏覽:15日期:2022-08-26 18:11:59

今天要介紹的是一個Java中一個很重要的概念——代理。

什么是代理?聯系生活想想看,代理似乎并不陌生,最形象的代表便是經紀人,明星一般都有經紀人,經紀人作為中間人,負責代理明星的相關事宜,比如說,有人要請明星去唱歌表演,一般不會直接跟明星聯系,而是聯系他的經紀人,他的經紀人來負責安排行程,而真正唱歌表演的還是明星本人,經紀人僅僅作為一個附加物存在。

在Java中,代理也是這樣的概念,來看個栗子:

先來創建一個明星類Stars:

public class Stars implements IStars{ private String name; public Stars(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void sing(){ System.out.println(getName() + ' 唱了一首歌.'); } public void dance(){ System.out.println(getName() + ' 跳了一支舞.'); }}

這是相應的接口:

public interface IStars { void sing(); void dance();}

現在創建一個代理類:

public class StarsProxy implements IStars{ //保存接收的代理對象 private IStars stars; public StarsProxy(IStars stars){ this.stars = stars; } @Override public void sing() { System.out.println('我是代理,我收到了唱歌請求。'); stars.sing(); System.out.println('唱歌完畢'); } @Override public void dance() { System.out.println('我是代理,我收到了跳舞請求。'); stars.dance(); System.out.println('跳舞完畢'); }}

來測試一下:

public class Test { public static void main(String[] args){ //創建目標對象 IStars stars = new Stars('Frank');//代理對象,把目標傳給代理對象,建立關系 IStars starsProxy = new StarsProxy(stars); starsProxy.sing(); starsProxy.dance(); }}

運行結果:

我是代理,我收到了唱歌請求。Frank 唱了一首歌.唱歌完畢我是代理,我收到了跳舞請求。Frank 跳了一支舞.跳舞完畢

我們可以看到,實際上代理類只是保存了Stars類的一個實例,因為實現的是相同的接口,StarsProxy類必須實現需要代理的Stars類的方法,比如這里的dance和sing,而這個接口正是鏈接兩者的關鍵,因為實現接口就代表必定存在接口中聲明的方法。

那么,為什么要使用代理呢?

其實主要目的是為了擴展原有類的功能,想想看,如果那個Stars類不是你寫的,而是別人寫的,現在要將原有的sing或者dance方法進行改造,比如需要統計唱歌和跳舞的次數,次數大于10則不進行該操作直接返回,這時候用代理就很好實現了,來把代理類稍作修改:

public class StarsProxy implements IStars{ //保存接收的代理對象 private IStars stars; //保存sing和dance的次數 private int num; public StarsProxy(IStars stars){ this.stars = stars; } @Override public void sing() { if (!ifWork()) { return; } System.out.println('我是代理,我收到了唱歌請求。'); stars.sing(); System.out.println('唱歌完畢'); } @Override public void dance() { if (!ifWork()) { return; } System.out.println('我是代理,我收到了跳舞請求。'); stars.dance(); System.out.println('跳舞完畢'); } /** * 是否繼續工作 * @return 是返回true,否則返回false */ private boolean ifWork(){ if (num > 3){ System.out.println('明星今天已經很累了,明天再來吧。'); return false; }else { num++; return true; } }}

修改一下測試類:

public class Test { public static void main(String[] args){ //創建目標對象 Stars stars = new Stars(); stars.setName('Frank'); //代理對象,把目標傳給代理對象,建立關系 StarsProxy starsProxy = new StarsProxy(stars); for (int i = 0;i < 5; i++){ starsProxy.sing(); } }}

測試結果如下:

我是代理,我收到了唱歌請求。Frank 唱了一首歌.唱歌完畢我是代理,我收到了唱歌請求。Frank 唱了一首歌.唱歌完畢我是代理,我收到了唱歌請求。Frank 唱了一首歌.唱歌完畢我是代理,我收到了唱歌請求。Frank 唱了一首歌.唱歌完畢明星今天已經很累了,明天再來吧。

看,簡單粗暴。

但其實并沒有多少干貨,這里僅僅是一種代理的思想,用這種思想可以比較方便的在不直接修改原有類的前提下對原有類的方法進行擴展。為某個對象提供一個代理,以控制對這個對象的訪問。 代理類和委托類有共同的父類或父接口,這樣在任何使用委托類對象的地方都可以用代理對象替代。代理類負責請求的預處理、過濾、將請求分派給委托類處理、以及委托類執行完請求后的后續處理。可以使業務類只關注業務邏輯本身,保證了業務類的重用性,這也是代理的共有優點。

但是限制也顯而易見:

1.代理類需要跟被代理類實現相同的接口,這樣才能一起向上轉型后實現多態。

2.當被代理的類需要進行的擴展增多時,管理會變得更加困難,之后對被代理類的修改,需要同時修改代理類,增加了修改成本。

所以不要為了使用而使用,應用在合適的場景才能發揮它真正的作用。

至此,本篇講解完畢,歡迎大家繼續關注!

以上就是詳解 Java靜態代理的詳細內容,更多關于Java靜態代理的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: 北京印刷厂_北京印刷_北京印刷公司_北京印刷厂家_北京东爵盛世印刷有限公司 | 百度网站优化,关键词排名,SEO优化-搜索引擎营销推广 | 耐高温硅酸铝板-硅酸铝棉保温施工|亿欧建设工程 | 数码听觉统合训练系统-儿童感觉-早期言语评估与训练系统-北京鑫泰盛世科技发展有限公司 | 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | 百度网站优化,关键词排名,SEO优化-搜索引擎营销推广 | 钢丝绳探伤仪-钢丝绳检测仪-钢丝绳探伤设备-洛阳泰斯特探伤技术有限公司 | 头条搜索极速版下载安装免费新版,头条搜索极速版邀请码怎么填写? - 欧远全 | 制丸机,小型中药制丸机,全自动制丸机价格-甘肃恒跃制药设备有限公司 | 考勤系统_考勤管理系统_网络考勤软件_政企|集团|工厂复杂考勤工时统计排班管理系统_天时考勤 | 留学生辅导网-在线课程论文辅导-留学生挂科申诉机构 | 九爱图纸|机械CAD图纸下载交流中心| 单电机制砂机,BHS制砂机,制沙机设备,制砂机价格-正升制砂机厂家 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 智能电表|预付费ic卡水电表|nb智能无线远传载波电表-福建百悦信息科技有限公司 | 直线模组_滚珠丝杆滑台_模组滑台厂家_万里疆科技 | 车间除尘设备,VOCs废气处理,工业涂装流水线,伸缩式喷漆房,自动喷砂房,沸石转轮浓缩吸附,机器人喷粉线-山东创杰智慧 | 海尔生物医疗四川代理商,海尔低温冰箱四川销售-成都壹科医疗器械有限公司 | 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 鲁网 - 山东省重点新闻网站,山东第一财经门户 | 杭州网络公司_百度SEO优化-外贸网络推广_抖音小程序开发-杭州乐软科技有限公司 | 河北中仪伟创试验仪器有限公司是专业生产沥青,土工,水泥,混凝土等试验仪器的厂家,咨询电话:13373070969 | 宿松新闻网 宿松网|宿松在线|宿松门户|安徽宿松(直管县)|宿松新闻综合网站|宿松官方新闻发布 | 球磨机,节能球磨机价格,水泥球磨机厂家,粉煤灰球磨机-吉宏机械制造有限公司 | 气动机械手-搬运机械手-气动助力机械手-山东精瑞自动化设备有限公司 | 青岛美佳乐清洁工程有限公司|青岛油烟管道清洗|酒店|企事业单位|学校工厂厨房|青岛油烟管道清洗 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 镀锌角钢_槽钢_扁钢_圆钢_方矩管厂家_镀锌花纹板-海邦钢铁(天津)有限公司 | 网优资讯-为循环资源、大宗商品、工业服务提供资讯与行情分析的数据服务平台 | 世界箱包品牌十大排名,女包小众轻奢品牌推荐200元左右,男包十大奢侈品牌排行榜双肩,学生拉杆箱什么品牌好质量好 - Gouwu3.com | 儋州在线-儋州招聘找工作、找房子、找对象,儋州综合生活信息门户! | 运动木地板_体育木地板_篮球馆木地板_舞台木地板-实木运动地板厂家 | 西宁装修_西宁装修公司-西宁业之峰装饰-青海业之峰墅级装饰设计公司【官网】 | 济南网站建设_济南网站制作_济南网站设计_济南网站建设公司_富库网络旗下模易宝_模板建站 | 金属清洗剂,防锈油,切削液,磨削液-青岛朗力防锈材料有限公司 | 车充外壳,车载充电器外壳,车载点烟器外壳,点烟器连接头,旅行充充电器外壳,手机充电器外壳,深圳市华科达塑胶五金有限公司 | 砍排机-锯骨机-冻肉切丁机-熟肉切片机-预制菜生产线一站式服务厂商 - 广州市祥九瑞盈机械设备有限公司 | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 | 橡胶粉碎机_橡胶磨粉机_轮胎粉碎机_轮胎磨粉机-河南鼎聚重工机械制造有限公司 | 粘弹体防腐胶带,聚丙烯防腐胶带-全民塑胶 | 对照品_中药对照品_标准品_对照药材_「格利普」高纯中药标准品厂家-成都格利普生物科技有限公司 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 自清洗过滤器_全自动过滤器_全自动反冲洗过滤器_量子过滤器-滑漮滴 | 联系我们-腾龙公司上分客服微信19116098882|