设计模式——抽象工厂模式
抽象工厂模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
/// <summary>
/// 联想15抽象类
/// </summary>
public abstract class Lenovo15
{
public abstract void SayHello();
}
/// <summary>
/// 联想16抽象类
/// </summary>
public abstract class Lenovo16
{
public abstract void SayHello();
}
public class GuangZhouLenovo15 : Lenovo15
{
//广州生产联想15台数
public override void SayHello()
{
Console.WriteLine("广州联想15生产300台");
}
}
public class GuangZhouLenovo16 : Lenovo16
{
//广州生产联想16的台数
public override void SayHello()
{
Console.WriteLine("广州联想16生产200台");
}
}
public class ShangHaiLenovo15 : Lenovo15
{
//上海生产联想15台数
public override void SayHello()
{
Console.WriteLine("上海联想15生产400台");
}
}
public class ShangHaiLenovo16 : Lenovo16
{
//上海生产联想16的台数
public override void SayHello()
{
Console.WriteLine("上海联想16生产100台");
}
}
/// <summary>
/// 抽象工厂类,提供创建每个产品的接口
/// </summary>
public abstract class AbstractFactory
{
public abstract Lenovo15 CreateLenovo15();
public abstract Lenovo16 CreateLenovo16();
}
public class GuangZhouFactory : AbstractFactory
{
//广州生产联想15
public override Lenovo15 CreateLenovo15()
{
return new GuangZhouLenovo15();
}
//广州生产联想16
public override Lenovo16 CreateLenovo16()
{
return new GuangZhouLenovo16();
}
}
public class ShangHaiFactory : AbstractFactory
{
//上海生产联想15
public override Lenovo15 CreateLenovo15()
{
return new ShangHaiLenovo15();
}
//上海生产联想16
public override Lenovo16 CreateLenovo16()
{
return new ShangHaiLenovo16();
}
}
static void Main(string[] args)
{
//创建广州抽象工厂
AbstractFactory guangzhouFactory = new GuangZhouFactory();
//广州抽象工厂生产广州的联想15
Lenovo15 guangzhoulenovo15 = guangzhouFactory.CreateLenovo15();
guangzhoulenovo15.SayHello();
Lenovo16 guangzhoulenovo16 = guangzhouFactory.CreateLenovo16();
//广州抽象工厂生产广州的联想16
guangzhoulenovo16.SayHello();
//创建上海抽象工厂
AbstractFactory shanghaiFactory = new ShangHaiFactory();
//上海抽象工厂生产广州的联想15
Lenovo15 shanghailenovo15 = shanghaiFactory.CreateLenovo15();
shanghailenovo15.SayHello();
Lenovo16 shanghailenovo16 = shanghaiFactory.CreateLenovo16();
//上海抽象工厂生产广州的联想16
shanghailenovo16.SayHello();
}