Jef*_*nal 14
有时这是工厂所做的一切,但他们也可以:
根据仅在运行时可用的数据选择具体实现:
// Beverage Factory
public IBeverage CreateBeverage(DateTime orderDate) {
return orderDate.Hour > 12 ? new Beer() : new Milk();
}
Run Code Online (Sandbox Code Playgroud)执行构造后初始化(通常是昂贵的初始化或初始化不适合封装在对象内部的数据):
// Weather report factory
public IWeatherReport CreateWeatherReport() {
WeatherReport report = new WeatherReport();
report.data = WeatherWebService.GetData();
return report;
}
Run Code Online (Sandbox Code Playgroud)基于现有实例初始化新实例:
// Fittest Algorithm Factory
public Algorithm CreateNewAlgorithm() {
return this.fittestAlgorithm.Clone();
}
Run Code Online (Sandbox Code Playgroud)从池中绘制实例而不是从头创建一个实例:
public IDbConnection CreateConnection(string connectionString) {
return this.ConnectionStacks[connectionString].Pop();
}
Run Code Online (Sandbox Code Playgroud)返回一个单例实例(虽然很糟糕,你最好确保它是线程安全的!)
| 归档时间: |
|
| 查看次数: |
690 次 |
| 最近记录: |