欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

Java裝飾者鴨子和火雞

吳曉飛1年前6瀏覽0評論

Java裝飾者模式是一種在不改變原有類的前提下,動態地將一個對象的行為包裝起來,以擴展其功能的設計模式。在這篇文章中,我們將以裝飾者鴨子和火雞的例子來介紹Java裝飾者模式。

我們假設有一個鴨子類和一個火雞類,它們分別有自己的各種行為,如飛行和叫聲?,F在我們想要任務鴨子可以像火雞一樣飛行一段短距離,并且火雞可以向鴨子一樣發出“嘎嘎”叫聲。這時,我們可以使用Java裝飾者模式來實現這個功能。

public interface Duck {
public void fly();
public void quack();
}
public interface Turkey {
public void fly();
public void gobble();
}
public class MallardDuck implements Duck {
public void fly() {
System.out.println("I'm flying");
}
public void quack() {
System.out.println("Quack");
}
}
public class WildTurkey implements Turkey {
public void fly() {
System.out.println("I'm flying a short distance");
}
public void gobble() {
System.out.println("Gobble gobble");
}
}

在上面的代碼中,我們定義了Duck和Turkey接口和它們的實現類MallardDuck和WildTurkey?,F在我們需要一個適配器來將Turkey適配成Duck。

public class TurkeyAdapter implements Duck {
Turkey turkey;
public TurkeyAdapter(Turkey turkey) {
this.turkey = turkey;
}
public void quack() {
turkey.gobble();
}
public void fly() {
for(int i=0; i<5; i++) {
turkey.fly();
}
}
}

在上面的代碼中,我們定義了一個TurkeyAdapter來實現Duck接口,并將Turkey對象傳入構造器。在適配器中,我們通過quack方法來調用Turkey的gobble方法,將Turkey的叫聲變成Duck的叫聲;通過fly方法來調用Turkey的fly方法,將Turkey的飛行變為Duck的飛行。

現在我們只需要使用適配器來包裝原有的MallardDuck和WildTurkey即可實現我們的需求。

public static void main(String[] args) {
MallardDuck duck = new MallardDuck();
WildTurkey turkey = new WildTurkey();
Duck turkeyAdapter = new TurkeyAdapter(turkey);
duck.fly();
duck.quack();
turkey.fly();
turkey.gobble();
turkeyAdapter.fly();
turkeyAdapter.quack();
}

在上面的Main方法中,我們創建了一個MallardDuck對象duck、一個WildTurkey對象turkey和包裝了WildTurkey的適配器對象turkeyAdapter,并對它們的方法進行了調用??梢钥吹?,通過適配器,我們成功地將Turkey對象的行為裝飾成了Duck對象的行為。