工厂模式是GOF设计模式里的一种,如果在创建对象时需要某些逻辑,可用使用工厂模式。工厂模式可用简单的用代码实现,也可以用后来出现的所谓依赖注入来实现。本文讨论三种在C#里的实现方式。(其实主要是为了介绍第三种实现。)
用户场景:在自行车出租店,有儿童,成年男子,成年女子三种类型的顾客,相应的自行车店需要提供儿童车,男式车,女式车。
最简单的工厂模式
先看最简单的实现方式
enum CustomerEnum
{
Child,
Man,
}
abstract class BikeBase
{
public abstract void ride();
}
class ChildBike : BikeBase
{
public override void ride()
{
Console.WriteLine("Child bike is riding...");
}
}
class ManBike : BikeBase
{
public override void ride()
{
Console.WriteLine("Man bike is riding...");
}
}
static BikeBase CreateBike(CustomerEnum customer)
{
BikeBase result= null;
switch (customer)
{
case CustomerEnum.Child:
{
result = new ChildBike();
break;
}
case CustomerEnum.Man:
{
result = new ManBike();
break;
}
}
return result;
}
static void Main(string[] args)
{
CustomerEnum customer = CustomerEnum.Child;
//创建bike的逻辑交给一个方法来实现
BikeBase bike = CreateBike(customer);
//使用创建出来的bike对象
bike.ride();
}
用属性实现工厂模式