Home > Backend Development > PHP Tutorial > PHP Design Pattern Adapter Pattern Code Example_PHP Tutorial

PHP Design Pattern Adapter Pattern Code Example_PHP Tutorial

WBOY
Release: 2016-07-13 09:54:14
Original
856 people have browsed it

Adapter pattern code examples of PHP design patterns

This article mainly introduces the adapter pattern code examples of PHP design patterns. This article explains the goals, roles, application scenarios, advantages, etc. Content, and give code examples, friends in need can refer to it

Target:

The interface of a class can be converted into another interface that the customer wants, so that originally incompatible interfaces can work together. The popular understanding is to adapt different interfaces into a unified API interface.

Character:

Target adaptation target, this role defines what interface to convert other classes to, which is our expected interface.

Adaptee is the interface that needs to be adapted.

Adapter adapter, the other two roles are existing roles, and the adapter role needs to be newly created. It is used to adapt the Adaptee and Target interfaces.

Application scenarios:

If data operations include mysql, mysqli, pdo, sqlite, postgresql, etc., if the generation environment needs to change the database, the adapter mode can be used to unify the interface. The same applies to the cache scenario. This will make it more convenient to change the cache strategy (memcache, redis, apc).

Advantages:

The adapted person completes the adaptation of the adaptation target through the adapter to achieve the purpose of being transparent to customers.

Sample code:

 ?

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

//适配目标,规定的接口将被适配对象实现

interface IDatabase

{

public function connect($host, $username, $password, $database);

public function query($sql);

}

 

//适配器

class Mysql implements IDatabase

{

protected $connect;

 

public function connect($host, $username, $password, $database)

{

$connect = mysql_connect($host, $username, $password);

mysql_select_db($database, $connect);

$this->connect = $connect;

//...

}

 

public function query($sql)

{

//...

}

}

 

//适配器

class Postgresql implements IDatabase

{

protected $connect;

 

public function connect($host, $username, $password, $database)

{

$this->connect = pg_connect("host=$host dbname=$database user=$username password=$password");

//...

}

 

public function query($sql)

{

//...

}

}

 

 

//客户端使用

$client = new Postgresql();

$client->query($sql);

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
//Adaptation target, the specified interface will be implemented by the adaptation object interface IDatabase { public function connect($host, $username, $password, $database); public function query($sql); } //Adapter class Mysql implements IDatabase { protected $connect; public function connect($host, $username, $password, $database) { $connect = mysql_connect($host, $username, $password); mysql_select_db($database, $connect); $this->connect = $connect; //... } public function query($sql) { //... } } //Adapter class Postgresql implements IDatabase { protected $connect; public function connect($host, $username, $password, $database) { $this->connect = pg_connect("host=$host dbname=$database user=$username password=$password"); //... } public function query($sql) { //... } } //Client use $client = new Postgresql(); $client->query($sql);

As above:

Target adaptation target: IDataBase interface

Adaptee is adapted: database operation functions of mysql and postgresql

Adapter adapter: mysql class and postgresql class

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/998357.htmlTechArticleAdapter pattern code examples of PHP design patterns. This article mainly introduces adapter pattern code examples of PHP design patterns. This article Explained the goals, roles, application scenarios, advantages, etc...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template