head first-----------adpter pattern
生活随笔
收集整理的這篇文章主要介紹了
head first-----------adpter pattern
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
head first-----------------深入淺出適配器模式 ? ? ?適配器模式:將一個類的接口,轉換成客戶想要的另外一個接口,適配器然原本接口不兼容的類可以合作無間。從而可以不用更改舊的代碼就可以適應新的業務需求 ? ? ?package com.clark.adapterpattern.abstractclass;
/**
?* Duck 接口
?* @author Administrator
?*
?*/
public interface Duck {
public void quack();//呱呱叫方法
public void fly();//鴨子會飛
} package com.clark.adapterpattern.abstractclass;
/**
?* 火雞接口
?* @author Administrator
?*
?*/
public interface Turkey {
public void gobble();//火雞嘎嘎叫
public void fly();//火雞也會飛,只是飛得短
}
package com.clark.adapterpattern;
import com.clark.adapterpattern.abstractclass.Duck;
/**
?* 綠頭鴨
?* @author Administrator
?*
?*/
public class MallardDuck implements Duck {
@Override
public void quack() {
System.out.println("Quack.......");
}
@Override
public void fly() {
System.out.println("fly remote distance.......");
}
}
package com.clark.adapterpattern;
import com.clark.adapterpattern.abstractclass.Turkey;
/**
?* 火雞的具體實現
?* @author Administrator
?*
?*/
public class WildTurkey implements Turkey {
@Override
public void gobble() {
System.out.println("Gobble gobble.....");
}
@Override
public void fly() {
System.out.println("fly short distance.....");
}
}
package com.clark.adapterpattern;
import java.util.Random;
import com.clark.adapterpattern.abstractclass.Duck;
import com.clark.adapterpattern.abstractclass.Turkey;
/**
?* 鴨子轉換成火雞的適配器
?* @author Administrator
?*
?*/
public class DuckAdpter implements Turkey {
public Duck duck;
public Random rand;
public DuckAdpter(Duck duck){
this.duck=duck;
rand=new Random();
}
@Override
public void gobble() {
this.duck.quack();
}
@Override
public void fly() {
if(rand.nextInt(5)==0){
this.duck.fly();
}
}
}
package com.clark.adapterpattern;
import com.clark.adapterpattern.abstractclass.Duck;
import com.clark.adapterpattern.abstractclass.Turkey;
/**
?* 火雞轉化成鴨子的適配器
?* @author Administrator
?*
?*/
public class TurkeyAdpter implements Duck {
public Turkey turkey;
public TurkeyAdpter(Turkey turkey){
this.turkey=turkey;
}
@Override
public void quack() {
this.turkey.gobble();
}
@Override
public void fly() {
//由于火雞飛得距離短,所以讓它多飛幾次
for (int i = 0; i < 3; i++) {
this.turkey.fly();
}
}
}
package com.clark.adapterpattern;
import com.clark.adapterpattern.abstractclass.Duck;
import com.clark.adapterpattern.abstractclass.Turkey;
/**
?* Test CLASS
?* @author Administrator
?*
?*/
public class TestDrive {
public static void main(String[] args) {
//先創建一只鴨子和一只火雞
MallardDuck duck=new MallardDuck();
WildTurkey turkey=new WildTurkey();
//然后將火雞包裝進火雞適配器,鴨子裝到鴨子適配器
Duck turkryAdpter=new TurkeyAdpter(turkey);
Turkey DuckAdpter=new DuckAdpter(duck);
//打印原來火雞和鴨子的行為
System.out.println("The Turkey says.....");
turkey.gobble();
turkey.fly();
System.out.println("\nThe Duck says.....");
testDuck(duck);
//使用適配器之后輸出的行為
System.out.println("\nThe turkeyadpter says....");
testDuck(turkryAdpter);
System.out.println("\nThe turkeyAdpter says....");
testTurkey(turkey);
}
public static void testDuck(Duck duck){
duck.quack();
duck.fly();
}
public static void testTurkey(Turkey turkey){
turkey.gobble();
turkey.fly();
}
}
//=============Test result================ The Turkey says.....
Gobble gobble.....
fly short distance.....
The Duck says.....
Quack.......
fly remote distance.......
The turkeyadpter says....
Gobble gobble.....
fly short distance.....
fly short distance.....
fly short distance.....
The turkeyAdpter says....
Gobble gobble.....
fly short distance.....
/**
?* Duck 接口
?* @author Administrator
?*
?*/
public interface Duck {
public void quack();//呱呱叫方法
public void fly();//鴨子會飛
} package com.clark.adapterpattern.abstractclass;
/**
?* 火雞接口
?* @author Administrator
?*
?*/
public interface Turkey {
public void gobble();//火雞嘎嘎叫
public void fly();//火雞也會飛,只是飛得短
}
package com.clark.adapterpattern;
import com.clark.adapterpattern.abstractclass.Duck;
/**
?* 綠頭鴨
?* @author Administrator
?*
?*/
public class MallardDuck implements Duck {
@Override
public void quack() {
System.out.println("Quack.......");
}
@Override
public void fly() {
System.out.println("fly remote distance.......");
}
}
package com.clark.adapterpattern;
import com.clark.adapterpattern.abstractclass.Turkey;
/**
?* 火雞的具體實現
?* @author Administrator
?*
?*/
public class WildTurkey implements Turkey {
@Override
public void gobble() {
System.out.println("Gobble gobble.....");
}
@Override
public void fly() {
System.out.println("fly short distance.....");
}
}
package com.clark.adapterpattern;
import java.util.Random;
import com.clark.adapterpattern.abstractclass.Duck;
import com.clark.adapterpattern.abstractclass.Turkey;
/**
?* 鴨子轉換成火雞的適配器
?* @author Administrator
?*
?*/
public class DuckAdpter implements Turkey {
public Duck duck;
public Random rand;
public DuckAdpter(Duck duck){
this.duck=duck;
rand=new Random();
}
@Override
public void gobble() {
this.duck.quack();
}
@Override
public void fly() {
if(rand.nextInt(5)==0){
this.duck.fly();
}
}
}
package com.clark.adapterpattern;
import com.clark.adapterpattern.abstractclass.Duck;
import com.clark.adapterpattern.abstractclass.Turkey;
/**
?* 火雞轉化成鴨子的適配器
?* @author Administrator
?*
?*/
public class TurkeyAdpter implements Duck {
public Turkey turkey;
public TurkeyAdpter(Turkey turkey){
this.turkey=turkey;
}
@Override
public void quack() {
this.turkey.gobble();
}
@Override
public void fly() {
//由于火雞飛得距離短,所以讓它多飛幾次
for (int i = 0; i < 3; i++) {
this.turkey.fly();
}
}
}
package com.clark.adapterpattern;
import com.clark.adapterpattern.abstractclass.Duck;
import com.clark.adapterpattern.abstractclass.Turkey;
/**
?* Test CLASS
?* @author Administrator
?*
?*/
public class TestDrive {
public static void main(String[] args) {
//先創建一只鴨子和一只火雞
MallardDuck duck=new MallardDuck();
WildTurkey turkey=new WildTurkey();
//然后將火雞包裝進火雞適配器,鴨子裝到鴨子適配器
Duck turkryAdpter=new TurkeyAdpter(turkey);
Turkey DuckAdpter=new DuckAdpter(duck);
//打印原來火雞和鴨子的行為
System.out.println("The Turkey says.....");
turkey.gobble();
turkey.fly();
System.out.println("\nThe Duck says.....");
testDuck(duck);
//使用適配器之后輸出的行為
System.out.println("\nThe turkeyadpter says....");
testDuck(turkryAdpter);
System.out.println("\nThe turkeyAdpter says....");
testTurkey(turkey);
}
public static void testDuck(Duck duck){
duck.quack();
duck.fly();
}
public static void testTurkey(Turkey turkey){
turkey.gobble();
turkey.fly();
}
}
//=============Test result================ The Turkey says.....
Gobble gobble.....
fly short distance.....
The Duck says.....
Quack.......
fly remote distance.......
The turkeyadpter says....
Gobble gobble.....
fly short distance.....
fly short distance.....
fly short distance.....
The turkeyAdpter says....
Gobble gobble.....
fly short distance.....
?
轉載于:https://www.cnblogs.com/snake-hand/p/3188510.html
總結
以上是生活随笔為你收集整理的head first-----------adpter pattern的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编译cscope-15.8a遇到的问题与
- 下一篇: WIN-8“内置管理员无法激活此应用”问