JAVA設(shè)計(jì)模式之代理模式
【代理模式應(yīng)用場(chǎng)景舉例】
比如在玩“極品飛車”這款游戲,如果游戲者手中的金錢達(dá)到了一定的數(shù)量就可以到車店買一部性能更高的賽車,那么這個(gè)賣車的“車店”就是一個(gè)典型的“汽車廠家”的“代理”,他為汽車廠家“提供賣車的服務(wù)”給有需求的人士。從面向?qū)ο蟮姆矫婵紤],“銷售汽車的代理”也是一個(gè)對(duì)象,那么這個(gè)對(duì)象也具有一定的狀態(tài),在軟件項(xiàng)目中這個(gè)對(duì)象也具有管理財(cái)務(wù)進(jìn)銷存的基本功能,那么在設(shè)計(jì)時(shí)就要以面向OOP編程的思想來(lái)考慮軟件的類結(jié)構(gòu),這個(gè)銷售汽車的代理也是一個(gè)類了。
【代理模式解釋】
類型:結(jié)構(gòu)模式
對(duì)一些對(duì)象提供代理,以限制那些對(duì)象去訪問(wèn)其它對(duì)象。
【代理模式-JAVA代碼實(shí)現(xiàn)】
新建一個(gè)買車的接口:
- public interface buy_car {
- public void buy_mycar();
- }
新建一個(gè)people人類,具有買車的行為,所以實(shí)現(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 客戶,可以直接購(gòu)買新車!");
- }
- 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)過(guò)proxy代理類的認(rèn)證,符合條件之后才可以擁有車輛,新建一個(gè)代理,這個(gè)代理類來(lái)考察當(dāng)前的people是否有資格進(jìn)行買車:
- 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()+"買了新車,交易結(jié)束!");
- }
- else
- {
- System.out.println(people.getUsername()+"錢不夠,不能買車,繼續(xù)比賽!");
- }
- }
- }
最后創(chuàng)建一個(gè)客戶端,用來(lái)模擬買車的行為:
- 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();
- }
- }
程序運(yùn)行結(jié)果如下:
- jeck買了新車,交易結(jié)束!
- rose錢不夠,不能買車,繼續(xù)比賽!
- tom是vip 客戶,可以直接購(gòu)買新車!
代理模式主要使用了java的多態(tài),干活的是被代理類,代理類主要是接活,你讓我干活,好,我交給幕后的類去干,你滿意就成,那怎么知道被代理類能不能干呢?同根就成,大家知根知底,你能做啥,我能做啥都清楚得很,同樣一個(gè)接口。
作者:jason0539
微博:http://weibo.com/2553717707
博客:http://blog.csdn.net/jason0539(轉(zhuǎn)載請(qǐng)說(shuō)明出處)

責(zé)任編輯:售電衡衡
-
權(quán)威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設(shè)計(jì)落地:鼓勵(lì)“光儲(chǔ)充放”,有序推進(jìn)氫燃料供給體系建設(shè)
2020-11-03新能源,汽車,產(chǎn)業(yè),設(shè)計(jì) -
中國(guó)自主研制的“人造太陽(yáng)”重力支撐設(shè)備正式啟運(yùn)
2020-09-14核聚變,ITER,核電 -
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務(wù),新能源消納,能源互聯(lián)網(wǎng)
-
新基建助推 數(shù)據(jù)中心建設(shè)將迎爆發(fā)期
2020-06-16數(shù)據(jù)中心,能源互聯(lián)網(wǎng),電力新基建 -
泛在電力物聯(lián)網(wǎng)建設(shè)下看電網(wǎng)企業(yè)數(shù)據(jù)變現(xiàn)之路
2019-11-12泛在電力物聯(lián)網(wǎng) -
泛在電力物聯(lián)網(wǎng)建設(shè)典型實(shí)踐案例
2019-10-15泛在電力物聯(lián)網(wǎng)案例
-
新基建之充電樁“火”了 想進(jìn)這個(gè)行業(yè)要“心里有底”
2020-06-16充電樁,充電基礎(chǔ)設(shè)施,電力新基建 -
燃料電池汽車駛?cè)雽こ0傩占疫€要多久?
-
備戰(zhàn)全面電動(dòng)化 多部委及央企“定調(diào)”充電樁配套節(jié)奏
-
權(quán)威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設(shè)計(jì)落地:鼓勵(lì)“光儲(chǔ)充放”,有序推進(jìn)氫燃料供給體系建設(shè)
2020-11-03新能源,汽車,產(chǎn)業(yè),設(shè)計(jì) -
中國(guó)自主研制的“人造太陽(yáng)”重力支撐設(shè)備正式啟運(yùn)
2020-09-14核聚變,ITER,核電 -
能源革命和電改政策紅利將長(zhǎng)期助力儲(chǔ)能行業(yè)發(fā)展
-
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務(wù),新能源消納,能源互聯(lián)網(wǎng) -
5G新基建助力智能電網(wǎng)發(fā)展
2020-06-125G,智能電網(wǎng),配電網(wǎng) -
從智能電網(wǎng)到智能城市
-
山西省首座電力與通信共享電力鐵塔試點(diǎn)成功
-
中國(guó)電建公司公共資源交易服務(wù)平臺(tái)摘得電力創(chuàng)新大獎(jiǎng)
-
電力系統(tǒng)對(duì)UPS的技術(shù)要求