工學(xué)4設(shè)計模式十八篇_第1頁
工學(xué)4設(shè)計模式十八篇_第2頁
工學(xué)4設(shè)計模式十八篇_第3頁
工學(xué)4設(shè)計模式十八篇_第4頁
工學(xué)4設(shè)計模式十八篇_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、設(shè)計模式十八篇設(shè)計模式之Flyweight打球篇周末沒事,和朋友約好去體育館(Gymnasium)打球,這個體育館(Gymnasium)提供各種球種,因為我們?nèi)硕?,因此選擇了羽毛球(badminton),兵乓球(pingpangball)、排球(vollyball)等球種,我們首先要填寫選球清單(playBallList),然后去器材部領(lǐng)球。下面我們看看該如何實現(xiàn)這個過程呢?1、我們首先先定義玩球(PlayBall)這樣一個接口類:public interface PlayBall    public void playBall( String ballName)

2、; /玩球2、玩具體的球(PlayConcreteBall)是對玩球(PlayBall)接口的具體實現(xiàn):public class PlayConcreteBall implements PlayBall   public void playBall(String concreteBallName)      System.out.println("玩"+concreteBallName+"!");  3、定義體育館(Gymnasium)類:public c

3、lass Gymnasium private Hashtable playBallList = new Hashtable(); /體育館根據(jù)我們的需要填寫的選球清單 public PlayBall getPlayBall(Object key) /得到要玩的球 PlayBall playBall = (PlayBall) playBallList.get(key); /根據(jù)清單獲得所需的球 if (playBall = null) /清單上沒有這種球/雖然清單上沒有這種球,但還想玩,那你先得到這種球,然后補清單 playBall = new PlayConcreteBall(); playB

4、allList.put(key, playBall); /將這種球補寫進(jìn)清單 return playBall; public Hashtable getPlayBallList() /獲得選球清單 return playBallList; 4、編寫測試類:public class Test public static void main(String args) Gymnasium gymnasium = new Gymnasium(); /我們?nèi)サ捏w育館 PlayBall badminton = gymnasium.getPlayBall( "羽毛球" ); /想得到羽毛

5、球 PlayBall pingpangball = gymnasium.getPlayBall( "兵乓球" ); /想得到兵乓球 PlayBall vollyball = gymnasium.getPlayBall( "排球" ); /想得到排球 Hashtable selectedBallList = gymnasium.getPlayBallList(); /器材部得到選球清單 (PlayBall)selectedBallList.get("羽毛球").playBall("羽毛球"); /得到羽毛球 (Pla

6、yBall)selectedBallList.get("兵乓球").playBall("兵乓球"); /得到兵乓球 (PlayBall)selectedBallList.get("排球").playBall("排球"); /得到排球 5、說明: A:Flyweight定義:避免大量擁有相同內(nèi)容的小類的開銷(如耗費內(nèi)存),使大家共享一個類(元類)。B:從本例中我們可以看到通過選球清單,我們獲得了所需的球種,因此關(guān)鍵點就是填寫好這張選球清單,其實Flyweight的重點也就在這里。設(shè)計模式之Bridge游戲篇今天從電子

7、市場買來兩張游戲碟,一張是三國游戲(SanGuoGame),一張是CS游戲(CSGame)。玩過游戲的人可能都知道,游戲?qū)τ嬎銠C系統(tǒng)(ComputerSystem)是有要求的,可能一個游戲在Windows98系統(tǒng)下能玩,到了Windows2000系統(tǒng)下就不能玩了,因此為了不走冤枉路,先看看游戲要求的計算機系統(tǒng)(ComputerSystem)可是一個好習(xí)慣呦! 好了,閑話少敘開始我們的游戲旅程吧:1、在這里,先定義計算機系統(tǒng)(ComputerSystem)接口類:public interface ComputerSystem public abstract void playGame(); /玩

8、游戲2、再定義對計算機系統(tǒng)(ComputerSystem)接口的具體實現(xiàn)類:A:Windows98系統(tǒng)public class Windows98 implements ComputerSystem public void playGame() System.out.println("玩Windows98游戲!"); B:Windows2000系統(tǒng)public class Windows2000 implements ComputerSystem public void playGame() System.out.println("玩Windows2000游戲!&

9、quot;); 3、 定義游戲(Game)類:public abstract class Game public abstract void play(); /玩游戲 protected ComputerSystem getSetupSystem(String type) /獲得要安裝的系統(tǒng) if (type.equals("Windows98") /如果游戲要求必須安裝在Windows98下 return new Windows98(); /使用Windows98系統(tǒng) else if (type.equals("Windows2000") /如果游戲要

10、求必須安裝在Windows2000下 return new Windows2000(); /使用Windows2000系統(tǒng) else return new Windows98(); /默認(rèn)啟動的是Windows98系統(tǒng) 4、 定義游戲(Game)類的子類:A:三國游戲(SanGuoGame)public class SanGuoGame extends Game private ComputerSystem computerSystem; public SanGuoGame(String type) /看游戲要求安裝在那個系統(tǒng)上 computerSystem = getSetupSystem(

11、type);/那么使用這個系統(tǒng) public void play() /玩游戲 computerSystem.playGame(); System.out.println("我正在玩三國,不要煩我!"); B:CS游戲(CSGame)public class CSGame extends Game private ComputerSystem computerSystem; public CSGame(String type) /看游戲要求安裝在那個系統(tǒng)上 computerSystem = getSetupSystem(type); /那么使用這個系統(tǒng) public voi

12、d play() /玩游戲 computerSystem.playGame(); System.out.println("我正在玩CS,不要煩我!"); 5、編寫測試類:public class Test public static void main(String args) Game sanguo = new SanGuoGame("Windows98"); /游戲要求Windows98 sanguo.play(); sanguo = new SanGuoGame("Windows2000");/游戲要求Windows2000 s

13、anguo.play(); Game cs = new CSGame("Windows98"); /游戲要求Windows98 cs.play(); cs = new CSGame("Windows2000");/游戲要求Windows2000 cs.play(); 運行結(jié)果:玩Windows98游戲!我正在玩三國,不要煩我!玩Windows2000游戲!我正在玩三國,不要煩我!玩Windows98游戲!我正在玩CS,不要煩我!玩Windows2000游戲!我正在玩CS,不要煩我!6、說明:A:Bridge定義:將抽象和行為劃分開來,各自獨立,但能動態(tài)的

14、結(jié)合。B:從本例中我們可以看到,不同的游戲?qū)ο到y(tǒng)的要求是不同的,三國和CS可能都需要Windows98系統(tǒng),也可能需要Windows2000系統(tǒng),甚至要求不相同的系統(tǒng),因此處理這類問題,我們就可以用Bridge這種模式了。C:這里行為是指游戲,抽象是指系統(tǒng)!設(shè)計模式之Chain of Responsibility項目篇最近單位接到一個軟件項目,要求在規(guī)定的時間內(nèi)完成,因此我們項目組成員就開始忙活了,我們都知道機械加工是有工序(Procedure)要求的,其實我們軟件開發(fā)也是有工序(Procedure)要求的,即首先先由分析設(shè)計人員對系統(tǒng)進(jìn)行分析設(shè)計,然后再由程序員進(jìn)行編碼,最后再由測試人員對整

15、個系統(tǒng)進(jìn)行測試。有人可能會說,我就偏不這樣,我就要先編碼,再分析設(shè)計,當(dāng)然了,你要這樣做我也沒辦法,不過你要真這么做,嘿嘿,我想你最后可要吃苦頭的,不信你就試試看。好了,閑話少敘,我們開始吧:1、我們先定義工序(Procedure)這樣一個接口類:public interface Procedure public abstract void nextProcedure(Procedure procedure); /下一工序 public abstract void executeProcedure(String aim); /執(zhí)行工序 2、定義工序(Procedure)接口的實現(xiàn)類:A:分析設(shè)

16、計工序(DesignProcedure)public class DesignProcedure implements Procedure private Procedure nextProcedure = null; private String procedureName = "Design" /該工序名 public void nextProcedure(Procedure procedure) /下一工序 nextProcedure = procedure; public void executeProcedure(String currentProcedure)

17、/執(zhí)行工序 if(currentProcedure.equals(procedureName) /如果當(dāng)前工序和該工序相符 System.out.println("進(jìn)行系統(tǒng)分析設(shè)計"); else if(nextProcedure != null) /如果當(dāng)前工序和該工序不相符則轉(zhuǎn)入下一工序 nextProcedure.executeProcedure(currentProcedure); B:編碼工序(CodeProcedure)public class CodeProcedure implements Procedure private Procedure nextPr

18、ocedure = null; private String procedureName = "Code" /該工序名 public void nextProcedure(Procedure procedure) /下一工序 nextProcedure = procedure; public void executeProcedure(String currentProcedure) /執(zhí)行工序 if(currentProcedure.equals(procedureName) /如果當(dāng)前工序和該工序相符 System.out.println("進(jìn)行編碼工作&qu

19、ot;); else if(nextProcedure != null) /如果當(dāng)前工序和該工序不相符則轉(zhuǎn)入下一工序 nextProcedure.executeProcedure(currentProcedure); C:測試工序(TestProcedure)public class TestProcedure implements Procedure private Procedure nextProcedure = null; private String procedureName = "Test" /該工序名 public void nextProcedure(Pr

20、ocedure procedure) /下一工序 nextProcedure = procedure; public void executeProcedure(String currentProcedure) /執(zhí)行工序 if(currentProcedure.equals(procedureName) /如果當(dāng)前工序和該工序相符 System.out.println("進(jìn)行系統(tǒng)測試"); else if(nextProcedure != null) /如果當(dāng)前工序和該工序不相符則轉(zhuǎn)入下一工序 nextProcedure.executeProcedure(currentP

21、rocedure); 3、編寫測試類:public class test public static void main(String args) DesignProcedure design = new DesignProcedure(); /分析設(shè)計工序 CodeProcedure code = new CodeProcedure(); /編碼工序 TestProcedure test = new TestProcedure(); /測試工序 design.nextProcedure(code); /定義分析設(shè)計工序的下一工序 code.nextProcedure(test); /定義編碼

22、工序的下一工序 design.executeProcedure("Design"); /開始執(zhí)行工序 design.executeProcedure("Code"); design.executeProcedure("Test"); 4、說明:A: Chain of Responsibility定義:Chain of Responsibility模式是用一系列類(classes)試圖處理一個請求request,這些類之間是一個松散的耦合,唯一共同點是在他們之間傳遞request.,也就是說,來了一個請求,A類先處理,如果沒有處理,就傳

23、遞到B類處理,如果沒有處理,就傳遞到C類處理,就這樣象一個鏈條 (chain)一樣傳遞下去。B:在本例中,分析設(shè)計工序(DesignProcedure)、編碼工序(CodeProcedure)和測試工序(TestProcedure)中的executeProcedure執(zhí)行工序方法中都對當(dāng)前工序和該工序進(jìn)行了判斷,如果當(dāng)前工序和該工序相符就執(zhí)行該工序,如果當(dāng)前工序和該工序不相符則轉(zhuǎn)入下一工序執(zhí)行。C:嘿嘿,其實說白了就是:是你的工作你干,不是你的工作你就不要干,順序往下傳該誰干誰干就是了。設(shè)計模式之Mediator聯(lián)通篇中午吃完飯沒事,我(133用戶)就和同事張三(130用戶)、李四(131用戶

24、)一塊去高新聯(lián)通大廳(gaoxinLianTongHall)交手機費。到了高新聯(lián)通大廳(gaoxinLianTongHall),我們發(fā)現(xiàn)因為是中午吃飯時間大廳里只有一個工作人員,因此我們只好一個一個來辦理交費業(yè)務(wù)了,首先是張三(130用戶),然后是李四(131用戶),最后是我(133用戶)。好了,讓我們看看這個過程如何來實現(xiàn)呢:1、我們先定義聯(lián)通大廳(LianTongHall)這樣一個接口類:public interface LianTongHall public void identifyUserType(LianTongUser user, String type); /判斷用戶類型pub

25、lic void getUserMoney(String type); /獲得用戶交的錢2、定義聯(lián)通大廳(LianTongHall)的具體實現(xiàn)類:public class ConcreteLianTongHall implements LianTongHall private User130 user130; private User131 user131; private User133 user133; public void identifyUserType(LianTongUser user, String type) if (type = "130") user1

26、30 = (User130) user; /130用戶 else if (type = "131") user131 = (User131) user; /131用戶 else if (type = "133") user133 = (User133) user; /133用戶 public void getUserMoney(String type) /得到用戶交的錢 if (type = "130") user131.pleaseWait(); /131用戶請先等 user133.pleaseWait(); /133用戶請先等 e

27、lse if (type = "131") user130.pleaseWait(); /130用戶請先等 user133.pleaseWait(); /133用戶請先等 else if (type = "133") user130.pleaseWait(); /130用戶請先等 user131.pleaseWait(); /131用戶請先等 3、定義聯(lián)通用戶(LianTongUser)接口類:public interface LianTongUser public void HandInMoney(); /交錢 public void pleaseWa

28、it(); /等待4、定義聯(lián)通用戶(LianTongUser)接口的實現(xiàn)類:A:130用戶(User130)public class User130 implements LianTongUser private final String type = "130" private LianTongHall liantongHall; public User130(LianTongHall liantongHall) this.liantongHall = liantongHall; liantongHall.identifyUserType(this, type); /聯(lián)通

29、大廳判斷是那種用戶 public void HandInMoney() System.out.println("130用戶正在交錢!"); liantongHall.getUserMoney(type); /聯(lián)通大廳得到用戶交的錢 public void pleaseWait() System.out.println("130用戶請先等一會!"); B:131用戶(User131)public class User131 implements LianTongUser private final String type = "131"

30、 private LianTongHall liantongHall; public User131(LianTongHall liantongHall) this.liantongHall = liantongHall; liantongHall.identifyUserType(this, type); /聯(lián)通大廳判斷是那種用戶 public void HandInMoney() System.out.println("131用戶正在交錢!"); liantongHall.getUserMoney(type); /聯(lián)通大廳得到用戶交的錢 public void plea

31、seWait() System.out.println("131用戶請先等一會!"); C:133用戶(User133)public class User133 implements LianTongUser private final String type = "133" private LianTongHall liantongHall; public User133(LianTongHall liantongHall) this.liantongHall = liantongHall; liantongHall.identifyUserType(

32、this, type); /聯(lián)通大廳判斷是那種用戶 public void HandInMoney() System.out.println("133用戶正在交錢!"); liantongHall.getUserMoney(type); /聯(lián)通大廳得到用戶交的錢 public void pleaseWait() System.out.println("133用戶請先等一會!"); 5、編寫測試類:public class Test public static void main(String args) LianTongHall gaoxinLianTo

33、ngHall = new ConcreteLianTongHall(); /高新聯(lián)通大廳 User130 zhangsan = new User130(gaoxinLianTongHall); /張三 User131 lisi = new User131(gaoxinLianTongHall); /李四 User133 me = new User133(gaoxinLianTongHall); /我 zhangsan.HandInMoney(); /張三交錢 lisi.HandInMoney(); /李四交錢 me.HandInMoney(); /我交錢 6、說明:A:Mediator定義:用

34、一個中介對象來封裝一系列關(guān)于對象交互行為。B:每個成員都必須知道中介對象,并且和中介對象聯(lián)系,而不是和其他成員聯(lián)系。C:在本例中,中介對象就相當(dāng)于我們的聯(lián)通大廳,我們都是和聯(lián)通大廳發(fā)生關(guān)系,張三、李四和我之間是沒有交錢關(guān)系的。設(shè)計模式之Strategy簡歷篇   表弟馬上就要大學(xué)畢業(yè),找工作要寫簡歷(Resume),因此他就來問我關(guān)于這方面的問題。我告訴他最好寫兩種類型的簡歷,一種是用中文寫的,一種是用英文寫的,如果是國企的話,就投中文簡歷(ChineseResume),如果是外企的話,就投英文簡歷(EnglishResume),嘿嘿,原因在這里就沒必要多說了吧。

35、下面讓我們看看這個過程該如何實現(xiàn)呢?1、我們先定義簡歷(Resume)接口類:public interface Resume    public void writeText();2、再定義對簡歷(Resume)接口的具體實現(xiàn):A:中文簡歷(ChineseResume)public class ChineseResume implements Resume   public void writeText()      System.out.println("用中文寫

36、簡歷!");  B:英文簡歷(EnglishResume)public class EnglishResume implements Resume public void writeText() System.out.println("用英文寫的簡歷!"); 3、定義投遞策略(Strategy)類:public class Strategy private Resume resume; public Strategy(Resume resume) /使用簡歷的策略 this.resume=resume; public void postResu

37、me() /投遞簡歷 System.out.println("投遞"); resume.writeText(); 4、編寫測試類:public class Test public static void main(String args) /如果是國企 Resume brotherResume = new ChineseResume(); /表弟用中文寫的簡歷 Strategy strategy = new Strategy(brotherResume); /使用用中文寫的簡歷 strategy.postResume(); /給國企投遞該簡歷 /如果是私企 brotherR

38、esume = new EnglishResume(); /表弟用英文寫的簡歷 strategy = new Strategy(brotherResume); /使用用英文寫的簡歷 strategy.postResume(); /給私企投遞該簡歷 5、說明:A:Strategy模式主要是定義一系列的算法,把這些算法一個個封裝成單獨的類。B:在本例中,中文簡歷(ChineseResume)和英文簡歷(EnglishResume)就相當(dāng)于兩種算法,同時我們把它定義成兩個單獨的類。C:在找工作時,我們可以根據(jù)企業(yè)類型選擇投遞那種簡歷,Strategy模式和Factory模式的不同之處是:Strate

39、gy模式主要是用來選擇不同的算法,而Factory模式的重點是用來創(chuàng)建對象。設(shè)計模式之Observer公交篇說到公交車,我想大家都不陌生吧,坐過公交車的朋友可能都知道,一般公交車上都有售票員(BusConductor),當(dāng)然無人售票車要除外了。售票員(BusConductor)除了收取乘客(Passenger)的車費還起著監(jiān)控的作用。下面讓我們看看這個過程該如何實現(xiàn)呢?1、我們先定義售票員(BusConductor)接口類: public interface BusConductor public void getCurrentPassenger(Passenger passenger); /

40、獲得當(dāng)前乘客情況2、再定義對售票員(BusConductor)接口的具體實現(xiàn):public class ConcreteBusConductor implements BusConductor private Vector vectorBus; /公交車vectorBus private Passenger passenger; public ConcreteBusConductor(Passenger passenger) this.passenger=passenger; public void getCurrentPassenger(Passenger passenger) vector

41、Bus = passenger.getCurrentPassenger(); /獲得當(dāng)前的乘客情況 for(int i = 0; i < vectorBus.size(); i+) System.out.println("公交車上有:" + (String)vectorBus.get(i); public void findPassengerChange(String action, String str) /公交車乘客變化 passenger.setCurrentPassenger(action, str); public void observeResult()

42、/觀察到的情況 passenger.showPassengerInfo(); 3、定義乘客(Passenger)接口類:public interface Passenger public abstract void attach(BusConductor busConductor); /將乘客和售票員關(guān)聯(lián)起來 public abstract void showPassengerInfo(); /傳遞乘客情況 public abstract Vector getCurrentPassenger(); /獲得當(dāng)前乘客情況 public abstract void setCurrentPasseng

43、er(String act, String str); /設(shè)置當(dāng)前乘客情況4、定義對乘客(Passenger)接口的具體實現(xiàn):public class ConcretePassenger implements Passenger private List observerList; /觀察者列表 private Vector vectorBus; /公交車vectorBus public ConcretePassenger() observerList = new ArrayList(); vectorBus = new Vector(); public void attach(BusCond

44、uctor busConductor) observerList.add(busConductor); /將公交車售票員增加到觀察者列表 public void showPassengerInfo() for(int i = 0; i < observerList.size(); i+) /使公交車售票員獲得當(dāng)前乘客情況 (BusConductor)observerList.get(i).getCurrentPassenger(this); public void setCurrentPassenger(String act, String str) if(act.equals(&quo

45、t;up") /乘客上車 vectorBus.add(str); /將該乘客增加到公交車vectorBus中 else if(act.equals("down") /乘客下車 vectorBus.remove(str); /將該乘客從公交車vectorBus中刪除 public Vector getCurrentPassenger() /獲得當(dāng)前乘客情況 return vectorBus; 5、編寫測試類:public class Test public static void main(String args) Passenger passenger = new

46、 ConcretePassenger(); ConcreteBusConductor busConductor = new ConcreteBusConductor(passenger); passenger.attach(busConductor); /將公交車車售票員和乘客聯(lián)系起來 /公交車售票員觀察到的情況 System.out.println("公交車售票員觀察到的情況:"); passenger.setCurrentPassenger("up", "乘客張三"); /上來乘客張三 passenger.setCurrentPa

47、ssenger("up", "乘客李四"); /上來乘客李四 busConductor.observeResult(); /公交車售票員觀察到的情況 System.out.println("公交車售票員觀察到的情況:"); busConductor.findPassengerChange("down", "乘客李四"); /下去乘客李四 busConductor.findPassengerChange("up", "乘客王五"); /上來乘客王五 busC

48、onductor.observeResult(); 5、說明:A:定義:反映對象間的的依賴關(guān)系,當(dāng)一個對象的狀態(tài)發(fā)生改變時, 所有依賴于它的對象都得到通知并被自動更新。B:在本例中,公交車售票員是觀察者,當(dāng)乘客情況發(fā)生變化時,公交車售票員能及時獲得這個信息。C:Observer用于需要及時展現(xiàn)信息變化的系統(tǒng)、比如可以用于股票、稅務(wù)上等。設(shè)計模式之Singleton生育篇老媽對我們沒給她生個小子而是個女兒始終耿耿于懷,這不最近不知從那里聽說現(xiàn)在政策允許再生一胎的消息后,不停的在我耳邊嘮叨。說道生孩子,就不得不提一提我國的計劃生育政策,"只生一個好,兒女都一樣","少

49、生,優(yōu)生,幸福一生"等等這些標(biāo)語滿大街都是,計劃生育政策也確實為我國控制人口立下了汗馬功勞,不過我覺得讓許多人真正只想生一個的應(yīng)該歸功于教育產(chǎn)業(yè)化,醫(yī)療產(chǎn)業(yè)化等等這一大群產(chǎn)業(yè)化,至少我就是這樣想的。嘿嘿,好象說遠(yuǎn)了,那好,讓我們言歸正傳開始吧。1、我們定義孩子(Child)類:public class Child   private static Child myChild = null; /我的孩子   private Child()public static Child getChild() /生孩子 if(myChild = n

50、ull) System.out.println("你還沒有孩子,可以生一個!"); myChild = new Child(); else System.out.println("你已經(jīng)有孩子了,不能再生了!"); return myChild ; 2、編寫測試類:public class Test public static void main(String args) Child.getChild(); Child.getChild(); /當(dāng)你已有一個孩子而再想生一個時,會提示你不能再生了 3、說明:A:定義:Singleton模式的作用是保證在J

51、ava應(yīng)用程序中,一個類Class只有一個實例存在。B:其實本例也可以通過使用synchronized關(guān)鍵字來實現(xiàn),板橋兄的文章對此闡述的很清楚,恕在此就不多說了。4、特別感謝:感謝zdr29473 、凌寒、flylyke等廣大網(wǎng)友的支持,現(xiàn)已將代碼進(jìn)行了修改,希望大家多提寶貴意見,讓我們共同進(jìn)步吧,再次感謝。設(shè)計模式之Command電視篇 每天晚上,搶電視遙控器都是我們家的保留節(jié)目。女兒喜歡看卡通屏道,老婆喜歡看電視劇屏道,我呢則喜歡看足球屏道。因此誰控制了遙控器,就等于實現(xiàn)了自己的節(jié)目夢想了。嘿嘿,其實每次都是我女兒成功得到,而且她還每次都陣陣有詞的說:"大的應(yīng)該讓小的嗎?&qu

52、ot;,你看這孩子,不知跟誰學(xué)的。然后遙控器就是老婆的,最后才輪到我,當(dāng)我高興的按到足球屏道時,播音員說:"今天的節(jié)目就到這里了,請明天再看!",我倒地狂嘔血i 不止。 大家都知道電視遙控器節(jié)目面板(ProgramPan)是由節(jié)目按鈕組成,通過選擇相應(yīng)的節(jié)目按鈕,就可以切換到相應(yīng)的節(jié)目屏道。下來讓我們看看如何實現(xiàn)通過遙控器按鈕選擇節(jié)目屏道的過程吧。1、在這里,先定義遙控器按鈕(RemoteControlButton)接口:public interface RemoteControlButton public abstract void selectProgram(); /選

53、擇節(jié)目屏道2、再定義遙控器按鈕(RemoteControlButton)接口的實現(xiàn)類:A:卡通節(jié)目按鈕(CartonProgramButton)類:public class CartonProgramButton implements RemoteControlButton public void selectProgram() System.out.println("選擇了卡通屏道!"); B:電視劇節(jié)目按鈕(TvPlanProgramButton)類:public class TvPlanProgramButton implements RemoteControlBut

54、ton public void selectProgram() System.out.println("選擇了電視劇屏道!"); C:足球節(jié)目按鈕(FootProgramButton)類:public class FootProgramButton implements RemoteControlButton public void selectProgram() System.out.println("選擇了足球屏道!"); 3、遙控器節(jié)目面板(ProgramPan)類:用來控制節(jié)目按鈕,顯示節(jié)目public class ProgramPan public static List programList() List list = new ArrayL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論