mysql in查詢_mysql 子查詢(in,all,exists,any) (**)
阿新 • • 發佈:2020-12-10
1、介面卡模式簡介
定義:將一個類的介面轉換成另外一個介面,使得兩個介面相容,介面卡模式分為類結構型模式和物件結構型模式兩種,前者類之間的耦合度比後者高,且要求程式設計師瞭解現有元件庫中的相關元件的內部結構,所以應用相對較少些
目標:使不能在一工作的兩個介面可以相容一起工作
解決問題:解決在軟體系統中,常常要將一些"現存的物件"放到新的環境中,而新環境要求的介面是現物件不能滿足的
優點:客戶端通過介面卡可以透明地呼叫目標介面
複用了現存的類,程式設計師不需要修改原有程式碼而重用現有的適配者類
將目標類和適配者類解耦,解決了目標類和適配者類介面不一致的問題
在很多業務場景中符合開閉原則
缺點:介面卡編寫過程需要結合業務場景全面考慮,可能會增加系統的複雜性
增加程式碼閱讀難度,降低程式碼可讀性,過多使用介面卡會使系統程式碼變得凌亂
實現:
角色:目標(Target)介面:當前系統業務所期待的介面,它可以是抽象類或介面
適配者(Adaptee)類:它是被訪問和適配的現存元件庫中的元件介面
介面卡(Adapter)類:它是一個轉換器,通過繼承或引用適配者的物件,把適配者介面轉換成目標介面,讓客戶按目標介面的格式訪問適配者
程式碼:
1 /**類介面卡模式**/ 2 public class classAdapter { 3 /**目標介面**/ 4 publicinterface Target{ 5 public void request(); 6 } 7 /**適配者**/ 8 static class Adaptee{ 9 public void specRequest(){ 10 System.out.println("適配者被呼叫"); 11 } 12 } 13 /**介面卡類**/ 14 static class adapter extends Adaptee implements Target{ 15 @Override16 public void request(){ 17 specRequest(); 18 } 19 } 20 /**測試方法**/ 21 public static void main(String[] args) { 22 System.out.println("開始介面卡測試"); 23 Target target = new adapter(); 24 target.request(); 25 System.out.println("測試結束"); 26 } 27 } 28 29 測試結果: 30 開始介面卡測試 31 適配者被呼叫 32 測試結束
1 /**物件適配模式**/ 2 public class objectAdapter { 3 /**目標介面**/ 4 public interface Target{ 5 public void request(); 6 } 7 /**適配者**/ 8 static class Adaptee{ 9 public void specRequest(){ 10 System.out.println("適配者被呼叫"); 11 } 12 } 13 /**介面卡類**/ 14 static class objectAdaptee implements Target { 15 private Adaptee adaptee; 16 public objectAdaptee(Adaptee adaptee){ 17 this.adaptee = adaptee; 18 } 19 @Override 20 public void request(){ 21 adaptee.specRequest(); 22 } 23 } 24 /**測試方法**/ 25 public static void main(String[] args) { 26 System.out.println("開始介面卡測試"); 27 Adaptee adaptee = new Adaptee(); 28 Target target = new objectAdaptee(adaptee); 29 target.request(); 30 System.out.println("測試結束"); 31 } 32 } 33 34 測試結果: 35 開始介面卡測試 36 適配者被呼叫 37 測試結束