using System;
namespace TestCS
{
class Program
{
static void Main(string[] args)
{
Factory factory0 = new MaseratiFactory();
Engine engine0 = factory0.CreateEngine();
Underpan underpan0 = factory0.CreateUnderpan();
Console.WriteLine("Create Engine " + engine0.GetName());
Console.WriteLine("Create Underpan " + underpan0.GetName());
Factory factory1 = new BMWFactory();
Engine engine1 = factory1.CreateEngine();
Underpan underpan1 = factory1.CreateUnderpan();
Console.WriteLine("Create Engine " + engine1.GetName());
Console.WriteLine("Create Underpan " + underpan1.GetName());
Console.ReadKey();
}
}
abstract class Factory
{
public abstract Engine CreateEngine();
public abstract Underpan CreateUnderpan();
}
class MaseratiFactory : Factory
{
public override Engine CreateEngine()
{
return new MaseratiEngine();
}
public override Underpan CreateUnderpan()
{
return new MaseratiUnderpan();
}
}
class BMWFactory : Factory
{
public override Engine CreateEngine()
{
return new BMWEngine();
}
public override Underpan CreateUnderpan()
{
return new BMWUnderpan();
}
}
abstract class Engine
{
public abstract string GetName();
}
class BMWEngine : Engine
{
public override string GetName()
{
return "BMW Engine";
}
}
class MaseratiEngine : Engine
{
public override string GetName()
{
return "Maserati Engine";
}
}
abstract class Underpan
{
public abstract string GetName();
}
class MaseratiUnderpan : Underpan
{
public override string GetName()
{
return "Maserati Underpan";
}
}
class BMWUnderpan : Underpan
{
public override string GetName()
{
return "BMW Underpan";
}
}
}
C#设计模式-抽象工厂模式
猜你喜欢
转载自blog.csdn.net/qq_37273889/article/details/85013965
今日推荐
周排行