適配器模式

定義:將一個接口轉換成客戶指望的另外一個接口,讓不兼容的類能夠合做無間java

有過作接口工做經驗的朋友,應該會很熟悉這種方式,就是開發一個新接口封裝現有的能力提供給別人,只是本身不知道是適配器模式而已編程

適配對象封裝被適配對象和其行爲(組合),相似裝飾者模式和命名模式,但裝飾者模式是一樣的接口,封裝後新增責任,命令模式是利用這種方式封裝出命令對象,將對象參數化調用者,讓調用者和執行者解耦。看到這裏是否是有點頭暈。。。那就看看我前面的博文吧「命令模式」「裝飾者模式ide

要點:
1.當須要實用一個現有的類,而其接口並不符合你的需求時,採用適配器模式。this

2.適配器改變接口以符合客戶的指望.net

3.實現一個適配器可能須要一番功夫,也可能不費功夫,是目標接口的大小與複雜度而定。code

4.適配器有兩種模式,類適配器和對象適配器,對象適配器更具彈性對象

 

實現:blog

早期Java 集合類有Enumeration進行迭代,後來通過更新有了Iterator,如今新代碼要求之前的迭代方式不能再使用,而不修改原來的代碼,因此提供適配器EnumerationIterator繼承

package com.jv.designpattern.adapter;

import java.util.Enumeration;
import java.util.Iterator;

public class EnumeratorIterator implements Iterator<Object> {
	Enumeration en ;
	
	public EnumeratorIterator(Enumeration en) {
		this.en = en;
	}

	@Override
	public boolean hasNext() {
		return en.hasMoreElements();
	}

	@Override
	public Object next() {
		return en.nextElement();
	}
	
	public void remove() {
		throw new UnsupportedOperationException();
	}

}

 

截止目前涉及到的模式都擺脫不了這些涉及原則:接口

1.封裝變化

2.多用組合,少用繼承

3.針對接口編程,不針對實現編程

4.爲交互對象之間的鬆耦合而努力

5.類應該對擴展開放,對修改關閉

6.依賴抽象,不要依賴具體類

7.只是最小化原則,意思就是讓對象依賴更少的對象

相關文章
相關標籤/搜索