1. 程式人生 > 其它 >mysql in查詢_mysql 子查詢(in,all,exists,any) (**)

mysql in查詢_mysql 子查詢(in,all,exists,any) (**)

1、介面卡模式簡介

定義:將一個類的介面轉換成另外一個介面,使得兩個介面相容,介面卡模式分為類結構型模式和物件結構型模式兩種,前者類之間的耦合度比後者高,且要求程式設計師瞭解現有元件庫中的相關元件的內部結構,所以應用相對較少些

目標:使不能在一工作的兩個介面可以相容一起工作

解決問題:解決在軟體系統中,常常要將一些"現存的物件"放到新的環境中,而新環境要求的介面是現物件不能滿足的

優點:客戶端通過介面卡可以透明地呼叫目標介面

   複用了現存的類,程式設計師不需要修改原有程式碼而重用現有的適配者類

   將目標類和適配者類解耦,解決了目標類和適配者類介面不一致的問題

   在很多業務場景中符合開閉原則

缺點:介面卡編寫過程需要結合業務場景全面考慮,可能會增加系統的複雜性

   增加程式碼閱讀難度,降低程式碼可讀性,過多使用介面卡會使系統程式碼變得凌亂

實現:

角色:目標(Target)介面:當前系統業務所期待的介面,它可以是抽象類或介面

   適配者(Adaptee)類:它是被訪問和適配的現存元件庫中的元件介面

   介面卡(Adapter)類:它是一個轉換器,通過繼承或引用適配者的物件,把適配者介面轉換成目標介面,讓客戶按目標介面的格式訪問適配者

程式碼:

 1 /**類介面卡模式**/
 2 public class classAdapter {
 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 adapter extends Adaptee implements Target{ 15 @Override
16 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 測試結束