JAVA設計模式之代理模式
【代理模式應用場景舉例】比如在玩極品飛車這款游戲,如果游戲者手中的金錢達到了一定的數(shù)量就可以到車店買一部性能更高的賽車,那么這個賣
【代理模式應用場景舉例】
比如在玩“極品飛車”這款游戲,如果游戲者手中的金錢達到了一定的數(shù)量就可以到車店買一部性能更高的賽車,那么這個賣車的“車店”就是一個典型的“汽車廠家”的“代理”,他為汽車廠家“提供賣車的服務”給有需求的人士。從面向?qū)ο蟮姆矫婵紤],“銷售汽車的代理”也是一個對象,那么這個對象也具有一定的狀態(tài),在軟件項目中這個對象也具有管理財務進銷存的基本功能,那么在設計時就要以面向OOP編程的思想來考慮軟件的類結構,這個銷售汽車的代理也是一個類了。
【代理模式解釋】
類型:結構模式
對一些對象提供代理,以限制那些對象去訪問其它對象。
【代理模式-JAVA代碼實現(xiàn)】
新建一個買車的接口:
- public interface buy_car {
- public void buy_mycar();
- }
新建一個people人類,具有買車的行為,所以實現(xiàn)接口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類不能擁有車,必須經(jīng)過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()+"錢不夠,不能買車,繼續(xù)比賽!");
- }
- }
- }
最后創(chuàng)建一個客戶端,用來模擬買車的行為:
- 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錢不夠,不能買車,繼續(xù)比賽!
- tom是vip 客戶,可以直接購買新車!
代理模式主要使用了java的多態(tài),干活的是被代理類,代理類主要是接活,你讓我干活,好,我交給幕后的類去干,你滿意就成,那怎么知道被代理類能不能干呢?同根就成,大家知根知底,你能做啥,我能做啥都清楚得很,同樣一個接口。
作者:jason0539
微博:http://weibo.com/2553717707
博客:http://blog.csdn.net/jason0539(轉載請說明出處)
責任編輯:售電衡衡
免責聲明:本文僅代表作者個人觀點,與本站無關。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實,對本文以及其中全部或者部分內(nèi)容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,并請自行核實相關內(nèi)容。
我要收藏
個贊
-
權威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設
2020-11-03新能源,汽車,產(chǎn)業(yè),設計 -
中國自主研制的“人造太陽”重力支撐設備正式啟運
2020-09-14核聚變,ITER,核電 -
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務,新能源消納,能源互聯(lián)網(wǎng)
-
新基建助推 數(shù)據(jù)中心建設將迎爆發(fā)期
2020-06-16數(shù)據(jù)中心,能源互聯(lián)網(wǎng),電力新基建 -
泛在電力物聯(lián)網(wǎng)建設下看電網(wǎng)企業(yè)數(shù)據(jù)變現(xiàn)之路
2019-11-12泛在電力物聯(lián)網(wǎng) -
泛在電力物聯(lián)網(wǎng)建設典型實踐案例
2019-10-15泛在電力物聯(lián)網(wǎng)案例
-
新基建之充電樁“火”了 想進這個行業(yè)要“心里有底”
2020-06-16充電樁,充電基礎設施,電力新基建 -
燃料電池汽車駛入尋常百姓家還要多久?
-
備戰(zhàn)全面電動化 多部委及央企“定調(diào)”充電樁配套節(jié)奏
-
權威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設
2020-11-03新能源,汽車,產(chǎn)業(yè),設計 -
中國自主研制的“人造太陽”重力支撐設備正式啟運
2020-09-14核聚變,ITER,核電 -
能源革命和電改政策紅利將長期助力儲能行業(yè)發(fā)展
-
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務,新能源消納,能源互聯(lián)網(wǎng) -
5G新基建助力智能電網(wǎng)發(fā)展
2020-06-125G,智能電網(wǎng),配電網(wǎng) -
從智能電網(wǎng)到智能城市