策略模式學(xué)習(xí)1:
從簡(jiǎn)單的模擬鴨子應(yīng)用做起:
SimUDuck.游戲中會(huì)出現(xiàn)各種鴨子,一邊游泳,一邊呱呱叫。
首先通常的設(shè)計(jì),設(shè)計(jì)一個(gè)鴨子超類,所有的鴨子都會(huì)呱呱叫,也會(huì)游泳,由超類負(fù)責(zé)處理這部分的行為實(shí)現(xiàn)代碼。
代碼分別如下:
這是一個(gè)鴨子超類
public abstract class Duck { public void quack() { System.out.PRintln("呱呱叫..."); } public void swim() { System.out.println("游來(lái)游去..."); } abstract void display();// 每種鴨子的外觀更不同,所以設(shè)定為抽象的 /* * 某一天需求變了,某些鴨子要會(huì)飛。 * 因此設(shè)計(jì)想到在超類中加入了這個(gè)方法,那么所有的鴨子都具備了會(huì)飛的行為。 */ void fly(){ System.out.println("飛來(lái)飛去..."); } //鴨子的其他方法}鴨子子類們:/** * 綠頭鴨 * @author Administrator * */public class MallardDuck extends Duck { @Override void display() { System.out.println("綠頭鴨.."); }}/** * 紅頭鴨 * @author Administrator * */public class RedheadDuck extends Duck { @Override void display() { System.out.println("紅頭鴨..."); }}/** * 橡皮鴨 * @author Administrator * */public class RubberDuck extends Duck { @Override void display() { System.out.println("橡皮鴨..."); } /* * 橡皮鴨子不會(huì)呱呱叫 * 但是問(wèn)題來(lái)了,這個(gè)橡皮鴨子會(huì)飛? * 那設(shè)計(jì)人員會(huì)說(shuō):一樣覆蓋掉就好 */ @Override public void quack() { //覆蓋超類的呱呱叫 System.out.println("吱吱叫..."); } @Override void fly() { //覆蓋,變成什么事兒都不做 ; } }這樣設(shè)計(jì)就是最通常的設(shè)計(jì)了,如果需求不變,那這樣設(shè)計(jì)就沒(méi)有什么缺點(diǎn)了。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注