標籤:har 1.0 size style interface ada closed 模式 建立
適配器模式:
適配器就相當於我們的轉接頭,比如手機充電器插頭(小米和華為的手機充電器不能共用,這時候就可以給華為的充電器按一個轉接頭,就可以給小米手機充電)。
同理,當一個類(充電器 HuaweiCharger)實現了某一個介面(華為 HuaweiPhone),但有時我們又需要去實現另一個介面(小米 XiaomiPhone),如果直接讓充電器去實現小米介面,就需要實現小米介面中的方法,如果充電器類已經被打到一個包中,這時候修改就比較困難,也違反開閉原則(擴充開,修改閉)。因此我們就需要建立一個適配器類(HTXAdapter Huawei Transform Xiaomi Adapter)去實現小米介面,同時又繼承自充電器類。
1 /** 2 * 華為手機介面 3 * 4 * @author DennyZhao 5 * @date 2017年6月20日 6 * @version 1.0 7 */ 8 public interface HuaweiPhone { 9 10 public int getSquarePlug();11 12 public int getSquareInterface();13 14 public void getAndroidSys();15 16 public void getHuaweiInput();17 18 public void getInterCpu();19 20 public void getInterBoard();21 22 }HuaweiPhone
1 /** 2 * 小米手機 3 * 4 * @author DennyZhao 5 * @date 2017年6月20日 6 * @version 1.0 7 */ 8 public interface XiaomiPhone { 9 10 public int getCirclePlug();11 12 public int getCircleInterface();13 14 public void getAndroidPlusSys();15 16 public void getXiaomiInput();17 18 public void getAMDCpu();19 20 public void getAMDBoard();21 }XiaomiPhone
1 /** 2 * 華為充電器 3 * 4 * @author DennyZhao 5 * @date 2017年6月20日 6 * @version 1.0 7 */ 8 public class HuaweiCharger extends HuaweiPhoneImpl implements HuaweiPhone{ 9 10 @Override11 public int getSquarePlug() {12 System.out.println("squarePlug----------");13 return 0;14 }15 16 @Override17 public int getSquareInterface() {18 System.out.println("squareInterface----------");19 return 0;20 }21 22 23 }HuaweiCharger
1 /** 2 * description:設計原則講究擴充開,修改閉。因此當我們需要將一個類去實現另一個介面時,可以通過建立子類去實現這個介面。 3 * 4 * @author DennyZhao 5 * @date 2017年6月12日 6 * @version 1.0 7 */ 8 public class HTXAdapter extends HuaweiCharger implements XiaomiPhone{ 9 10 /**11 * 小米適配12 */13 @Override14 public int getCirclePlug() {15 int a = super.getSquarePlug();16 return a+ 5;17 }18 19 /**20 * 小米適配21 */22 @Override23 public int getCircleInterface() {24 int b = super.getSquareInterface();25 return b + 4;26 }27 @Override28 public void getAndroidPlusSys() {29 // TODO Auto-generated method stub30 31 }32 33 @Override34 public void getXiaomiInput() {35 // TODO Auto-generated method stub36 37 }38 39 @Override40 public void getAMDCpu() {41 // TODO Auto-generated method stub42 43 }44 45 @Override46 public void getAMDBoard() {47 // TODO Auto-generated method stub48 49 }50 51 }HTXAdapter
通過上面的代碼就可以知道,HTXAdaper實現了Xiaomi介面的所有方法,這樣就不會汙染HuaweiCharger了。隨時不用可以去掉。插拔式結構。
構建模式--Adapter模式(JAVA)