この記事では主にPHPデザインパターンのアダプターパターンコード例を紹介し、目的、役割、適用シナリオ、利点などを説明し、コード例を示します。必要な友達はそれを参照できます
目標:
クラスのインターフェースを顧客が望む別のインターフェースに変換することで、本来互換性のないインターフェース同士も連携できるようになります。一般的な理解は、さまざまなインターフェイスを統合された API インターフェイスに適応させることです。
キャラクター:
ターゲット適応ターゲット、このロールは、他のクラスをどのインターフェイスに変換するかを定義します。これは、期待されるインターフェイスです。
Adapteは適応する必要があるインターフェースです。
Adapter アダプター、他の 2 つのロールは既存のロールであり、アダプター ロールは Adaptee インターフェイスと Target インターフェイスを適応させるために使用されます。
アプリケーションシナリオ:
データ操作にmysql、mysqli、pdo、sqlite、postgresqlなどが含まれる場合、生成環境でデータベースを変更する必要がある場合は、アダプターモードを使用してインターフェースを統一できます。同じことがキャッシュ シナリオにも当てはまります。これにより、キャッシュ戦略 (memcache、redis、apc) の変更がより便利になります。
利点:
適応者は、顧客に対して透過的であるという目的を達成するために、アダプターを通じて適応ターゲットの適応を完了します。
サンプルコード:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
//適応ターゲット、指定されたインターフェースは適応オブジェクトによって実装されます インターフェイス IDatabase { パブリック関数 connect($host, $username, $password, $database); パブリック関数クエリ($sql); }
//アダプター Mysql クラスは IDatabase を実装します { 保護された $connect;
パブリック関数 connect($host, $username, $password, $database) { $connect = mysql_connect($host, $username, $password); mysql_select_db($database, $connect); $this->connect = $connect; //... }
パブリック関数クエリ($sql) { //... } }
//アダプター PostgresqlクラスはIDatabaseを実装します { 保護された $connect;
パブリック関数 connect($host, $username, $password, $database) { $this->connect = pg_connect("host=$host dbname=$database user=$usernamepassword=$password"); //... }
パブリック関数クエリ($sql) { //... } }
//クライアントの使用 $client = 新しい Postgresql(); $client->query($sql); |
同上:
ターゲット適応ターゲット:IDataBaseインターフェース
Adaptee:mysqlとpostgresqlのデータベース操作機能
アダプターアダプター:mysqlクラスとpostgresqlクラス