PHP design pattern adapter pattern code example, php design pattern_PHP tutorial

WBOY
Release: 2016-07-13 09:54:28
Original
874 people have browsed it

PHP design pattern adapter pattern code example, php design pattern

Goal:

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 established, which 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:

//适配目标,规定的接口将被适配对象实现
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);

Copy after login

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/997907.htmlTechArticlePHP design pattern adapter pattern code example, php design pattern goal: can convert the interface of a class into what the customer wants Another interface that enables originally incompatible interfaces to work together...
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