設計模式——適配器模式(Adapter)

適配器模式是將一個類型接口進行封裝從而轉化另一個類型的接口,它的作用相當於一個類型轉換器。


1、模式中的角色

Adaptee接口:這是需要被轉換的源類型,即需要進行轉換的接口。

Adapter類:對Adaptee進行轉換的類

Target接口:目標接口,最終轉化成的接口類型


2、角色關係圖


3、實例

描述:將火雞對象轉換成鴨子對象

a.Adaptee角色

Turkey接口:

public interface Turkey {

	public void gobble();
	public void fly();
}
WildTurkey類:

public class WildTurkey implements Turkey {

	@Override
	public void gobble() {
		// TODO Auto-generated method stub
		System.out.print("gobble");
	}

	@Override
	public void fly() {
		// TODO Auto-generated method stub
		System.out.print("turkey is flying");
	}

}
b.Target角色

Duck接口:

public interface Duck {
	
	public void quack();
	public void fly();
	
}
MallardDuck類:

public class MallardDuck implements Duck {

	@Override
	public void quack() {
		// TODO Auto-generated method stub
		System.out.print("quack");
	}

	@Override
	public void fly() {
		// TODO Auto-generated method stub
		System.out.print("duck is flying");
		
	}

}
c.Adapter

TurkeyAdapter適配器:

public class TurkeyAdapter implements Duck {

	Turkey turkey;
	
	public TurkeyAdatper(Turkey turkey) {
		this.turkey=turkey;
	}

	@Override
	public void quack() {
		// TODO Auto-generated method stub
		turkey.gobble();
		
	}

	@Override
	public void fly() {
		// TODO Auto-generated method stub
		turkey.fly();
	}

}

測試:

public static void main(String[] args) {
		// TODO Auto-generated method stub
		MallardDuck duck=new MallardDuck();
		WildTurkey turkey=new WildTurkey();
		Duck turkeyAdapter=new TurkeyAdatper(turkey);

	}



後記:

滴水穿石

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章