Design Pattern – Creational Pattern – Abstract Factory Pattern
Abstract Factory Pattern được sử dụng khi ta muốn nhóm các factories sản xuất các products có cùng một kiểu hành động.
Ví dụ các Database khác nhau, có cách cấu thành câu truy vấn SQL khác nhau (quotes, delimiter…) (products khác nhau), vì vậy chung một tình huống là truy vấn dữ liệu, và giả sử ta có chung một đối tượng dữ liệu truy vấn cho các products là SelectObject, ta sẽ có:
abstract SQL_Factory with virtue createSqlString(SelectObject) methods
MySQL_Factory extends SQL_Factory implements createSqlString(SelectObject)
MsSQL_Factory extends SQL_Factory implements createSqlString(SelectObject)
In the application:
if(db_adapter == MySQL) $db_Factory = new MySQL_Factory
if(db_adapter == MsSQL) $db_Factory = new MsSQL_Factory
/* Do something to create SelectObject*/
$sql = $db_Factory->createSqlString(SelectObject)
/* Use db connection to execute the sql*/
$results = $db_Factory->getDbConnection()->execute($sq);