PHP設計モードのアダプタモードコード例
1850 ワード
ターゲット:
1つのクラスのインタフェースを、本来互換性のないインタフェースが一緒に動作するように、顧客が望む別のインタフェースに変換することができる.一般的な理解は、異なるインタフェースを統一的なAPIインタフェースに適合させることである.
役割:
Targetはターゲットに適しており、このロールは他のクラスをどのようなインタフェースに変換するか、つまり私たちの期待インタフェースを定義します.Adapteeが適合される者は,適合されるインタフェースが必要である.Adapterアダプタは、他の2つのロールがすでに存在するロールですが、アダプタロールは、AdapteeとTargetインタフェースを適切にするために新しく確立する必要があります.
適用シーン:
データ操作にmysql、mysqli、pdo、sqlite、postgresqlなどがある場合は、生成環境でデータベースを交換する必要がある場合は、アダプタモードでインタフェースを統合できます.同じcacheのシーンでも、キャッシュポリシー(memcache、redis、apc)を交換するのが便利です.
メリット:
アダプターは、アダプターを介してアダプターターゲットのアダプターを完了し、お客様に透明な目的を達成します.
サンプルコード:
次のようになります.
Targetアダプティブターゲット:IDataBaseインタフェースAdapteeアダプティブ:mysqlとpostgresqlのデータベース操作関数Adapterアダプタ:mysqlクラスとpostgresqlクラス
1つのクラスのインタフェースを、本来互換性のないインタフェースが一緒に動作するように、顧客が望む別のインタフェースに変換することができる.一般的な理解は、異なるインタフェースを統一的なAPIインタフェースに適合させることである.
役割:
Targetはターゲットに適しており、このロールは他のクラスをどのようなインタフェースに変換するか、つまり私たちの期待インタフェースを定義します.Adapteeが適合される者は,適合されるインタフェースが必要である.Adapterアダプタは、他の2つのロールがすでに存在するロールですが、アダプタロールは、AdapteeとTargetインタフェースを適切にするために新しく確立する必要があります.
適用シーン:
データ操作にmysql、mysqli、pdo、sqlite、postgresqlなどがある場合は、生成環境でデータベースを交換する必要がある場合は、アダプタモードでインタフェースを統合できます.同じcacheのシーンでも、キャッシュポリシー(memcache、redis、apc)を交換するのが便利です.
メリット:
アダプターは、アダプターを介してアダプターターゲットのアダプターを完了し、お客様に透明な目的を達成します.
サンプルコード:
// ,
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);
次のようになります.
Targetアダプティブターゲット:IDataBaseインタフェースAdapteeアダプティブ:mysqlとpostgresqlのデータベース操作関数Adapterアダプタ:mysqlクラスとpostgresqlクラス