JAVA設計模式之代理模式
【代理模式應用場景舉例】比如在玩極品飛車這款游戲,如果游戲者手中的金錢達到了一定的數量就可以到車店買一部性能更高的賽車,那么這個賣
【代理模式應用場景舉例】
比如在玩“極品飛車”這款游戲,如果游戲者手中的金錢達到了一定的數量就可以到車店買一部性能更高的賽車,那么這個賣車的“車店”就是一個典型的“汽車廠家”的“代理”,他為汽車廠家“提供賣車的服務”給有需求的人士。從面向對象的方面考慮,“銷售汽車的代理”也是一個對象,那么這個對象也具有一定的狀態,在軟件項目中這個對象也具有管理財務進銷存的基本功能,那么在設計時就要以面向OOP編程的思想來考慮軟件的類結構,這個銷售汽車的代理也是一個類了。
【代理模式解釋】
類型:結構模式
對一些對象提供代理,以限制那些對象去訪問其它對象。
【代理模式-JAVA代碼實現】
新建一個買車的接口:
- public interface buy_car {
- public void buy_mycar();
- }
新建一個people人類,具有買車的行為,所以實現接口buy_car
- class people implements buy_car {
- private int cash;
- private String vip;
- private String username;
- @Override
- public void buy_mycar() {
- // TODO Auto-generated method stub
- System.out.print(username+"是vip 客戶,可以直接購買新車!");
- }
- public int getCash(){
- return cash;
- }
- public void setCash(int cash){
- this.cash = cash;
- }
- public String getUsername(){
- return username;
- }
- public void setUsername(String username){
- this.username = username;
- }
- public String getVip(){
- return vip;
- }
- public void setVip(String vip){
- this.vip = vip;
- }
- }
people類不能擁有車,必須經過proxy代理類的認證,符合條件之后才可以擁有車輛,新建一個代理,這個代理類來考察當前的people是否有資格進行買車:
- class proxyclass implements buy_car {
- private people people;
- public people getPeople(){
- return people;
- }
- public void setPeople(people people){
- this.people = people;
- }
- @Override
- public void buy_mycar() {
- // TODO Auto-generated method stub
- if (people.getVip() == "vip"){
- people.buy_mycar();
- return ;
- }
- if(people.getCash()>=50000){
- System.out.println(people.getUsername()+"買了新車,交易結束!");
- }
- else
- {
- System.out.println(people.getUsername()+"錢不夠,不能買車,繼續比賽!");
- }
- }
- }
最后創建一個客戶端,用來模擬買車的行為:
- public class run_main {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- people people_1 =new people();
- people_1.setCash(60000);
- people_1.setUsername("jeck");
- people people_2 =new people();
- people_2.setCash(40000);
- people_2.setUsername("rose");
- people people_3 =new people();
- people_3.setCash(0);
- people_3.setUsername("tom");
- people_3.setVip("vip");
- proxyclass proxy_buy = new proxyclass();
- proxy_buy.setPeople(people_1);
- proxy_buy.buy_mycar();
- proxy_buy.setPeople(people_2);
- proxy_buy.buy_mycar();
- proxy_buy.setPeople(people_3);
- proxy_buy.buy_mycar();
- }
- }
程序運行結果如下:
- jeck買了新車,交易結束!
- rose錢不夠,不能買車,繼續比賽!
- tom是vip 客戶,可以直接購買新車!
代理模式主要使用了java的多態,干活的是被代理類,代理類主要是接活,你讓我干活,好,我交給幕后的類去干,你滿意就成,那怎么知道被代理類能不能干呢?同根就成,大家知根知底,你能做啥,我能做啥都清楚得很,同樣一個接口。
作者:jason0539
微博:http://weibo.com/2553717707
博客:http://blog.csdn.net/jason0539(轉載請說明出處)
責任編輯:售電衡衡
免責聲明:本文僅代表作者個人觀點,與本站無關。其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,并請自行核實相關內容。
我要收藏
個贊
-
權威發布 | 新能源汽車產業頂層設計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設
2020-11-03新能源,汽車,產業,設計 -
中國自主研制的“人造太陽”重力支撐設備正式啟運
2020-09-14核聚變,ITER,核電 -
探索 | 既耗能又可供能的數據中心 打造融合型綜合能源系統
2020-06-16綜合能源服務,新能源消納,能源互聯網
-
新基建助推 數據中心建設將迎爆發期
2020-06-16數據中心,能源互聯網,電力新基建 -
泛在電力物聯網建設下看電網企業數據變現之路
2019-11-12泛在電力物聯網 -
泛在電力物聯網建設典型實踐案例
2019-10-15泛在電力物聯網案例
-
權威發布 | 新能源汽車產業頂層設計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設
2020-11-03新能源,汽車,產業,設計 -
中國自主研制的“人造太陽”重力支撐設備正式啟運
2020-09-14核聚變,ITER,核電 -
能源革命和電改政策紅利將長期助力儲能行業發展
-
探索 | 既耗能又可供能的數據中心 打造融合型綜合能源系統
2020-06-16綜合能源服務,新能源消納,能源互聯網 -
5G新基建助力智能電網發展
2020-06-125G,智能電網,配電網 -
從智能電網到智能城市