ตัวอย่างชีวิตจริงมีให้ในเนมสเปซ System.Data.Common ที่มีคลาสพื้นฐานนามธรรมซึ่งรวมถึง DbConnection, DbCommand และ DbDataAdapter และแชร์โดยผู้ให้บริการข้อมูล. NET Framework เช่น System.Data.SqlClient และ System.Data.OracleClient ซึ่ง ช่วยให้นักพัฒนาสามารถเขียนรหัสการเข้าถึงข้อมูลทั่วไปที่ไม่ขึ้นอยู่กับผู้ให้บริการข้อมูลเฉพาะ
คลาส DbProviderFactories จัดเตรียมเมธอดแบบคงที่สำหรับการสร้างอินสแตนซ์ DbProviderFactory จากนั้นอินสแตนซ์จะส่งคืนอ็อบเจ็กต์ที่พิมพ์อย่างถูกต้องตามข้อมูลผู้ให้บริการและสตริงการเชื่อมต่อที่ให้มาในขณะรัน
ตัวอย่าง:
DataTable allProvidersTable = DbProviderFactories.GetFactoryClasses();
/* Getting SqlClient family members */
DbProviderFactory dbProviderFactory = DbProviderFactories.GetFactory("System.Data.SqlClient");
DbCommand dbCommand = dbProviderFactory.CreateCommand();
DbConnection dbConnection = dbProviderFactory.CreateConnection();
DbDataAdapter dbDataAdapter = dbProviderFactory.CreateDataAdapter();
SqlClientFactory sqlClientFactory = (SqlClientFactory)dbProviderFactory;
SqlConnection sqlConnection = (SqlConnection)dbConnection;
SqlCommand sqlCommand = (SqlCommand) dbCommand;
SqlDataAdapter sqlDataAdapter = (SqlDataAdapter) dbDataAdapter;
/* Getting OracleClient family members*/
dbProviderFactory = DbProviderFactories.GetFactory("System.Data.OracleClient");
dbCommand = dbProviderFactory.CreateCommand();
dbConnection = dbProviderFactory.CreateConnection();
dbDataAdapter = dbProviderFactory.CreateDataAdapter();
OracleClientFactory oracleClientFactory = (OracleClientFactory)dbProviderFactory;
OracleConnection oracleConnection = (OracleConnection)dbConnection;
OracleCommand oracleCommand = (OracleCommand)dbCommand;
OracleDataAdapter oracleDataAdapter = (OracleDataAdapter)dbDataAdapter;
ตัวอย่างที่ 2
สถาปัตยกรรม Code Solution
อินสแตนซ์โรงงานคอนกรีตมีให้โดยใช้วิธี Static Factory ดังต่อไปนี้
public class FurnitureProviderFactory
{
public static IFurnitureFactory GetFactory(string furnitureType)
{
if (furnitureType == "Wood")
{
return new WoodenFurnitureFactory();
}
if (furnitureType == "Plastic")
{
return new PlasticFurnitureFactory();
}
throw new Exception("Undefined Furniture");
}
}