PHP デザイン パターン アダプター パターン コード例_PHP チュートリアル

WBOY
リリース: 2016-07-13 09:54:14
オリジナル
845 人が閲覧しました

PHPデザインパターンのアダプターパターンコード例

この記事では主に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クラス

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/998357.html技術記事 PHP デザイン パターン アダプター パターン コード サンプル この記事では、主に PHP デザイン パターン アダプター パターン コード サンプルを紹介し、目的、役割、アプリケーション シナリオ、利点などを説明します...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート