抽象工厂模式
在统一管理对象创建,对象相互依赖时,可使用抽象工厂(可配合抽象方法使用)
namespace DesingnPatten.抽象工厂模式
{
public abstract class AbstractCarFactory
{
public abstract AbstractCarA CreateCarA();
public abstract AbstractCarB CreateCarB();
}
public abstract class AbstractCarA
{
public abstract void Interact(AbstractCarB b);
}
public abstract class AbstractCarB
{
public abstract void Interact(AbstractCarA a);
}
public class Client
{
private AbstractCarA carA;
private AbstractCarB carB;
public Client(AbstractCarFactory factory)
{
carA = factory.CreateCarA();
carB = factory.CreateCarB();
}
public void Run()
{
carA.Interact(carB);
carB.Interact(carA);
}
}
public class CreateCarAFactory : AbstractCarFactory
{
public override AbstractCarA CreateCarA()
{
return new CarA();
}
public override AbstractCarB CreateCarB()
{
return new CarB();
}
}
public class CarA : AbstractCarA
{
public override void Interact(AbstractCarB b)
{
Console.WriteLine($"I am {typeof(CarA).Name},created by {typeof(AbstractCarB).Name}");
}
}
public class CarB : AbstractCarB
{
public override void Interact(AbstractCarA a)
{
Console.WriteLine($"I am {typeof(CarB).Name},created by {typeof(AbstractCarA).Name}");
}
}
}
类之间UML图如下
本文使用 mdnice 排版