抽象方法是23种设计模式之一。和工厂方法的区别是,抽象方法关注的是一组对象的创建
/// <summary>
/// 抽象工厂
/// 抽象工厂和工厂方法差不多,只是抽象方法适用于创建一组对象(不同的组里面的对象方法都不相同)
/// </summary>
public class AbstractMethod
{
}
public abstract class IProductA
{
public abstract void Show();
}
public abstract class IProductB
{
public abstract void Show();
}
//IOS组-产品A
public class IosProductA : IProductA
{
public override void Show()
{
Console.WriteLine("IOS ProductA - Show");
}
}
//IOS组-产品B
public class IosProductB : IProductB
{
public override void Show()
{
Console.WriteLine("IOS ProductB - Show");
}
}
//Android组-产品A
public class AndroidProductA : IProductA
{
public override void Show()
{
Console.WriteLine("Android ProductA - Show");
}
}
//Android组-产品B
public class AndroidProductB : IProductB
{
public override void Show()
{
Console.WriteLine("Android ProductB - Show");
}
}
public abstract class AbstractFactory
{
public abstract IProductA CreatProductA();
public abstract IProductB CreatProductB();
}
public class IOSFactory : AbstractFactory
{
public override IProductA CreatProductA()
{
return new IosProductA();
}
public override IProductB CreatProductB()
{
return new IosProductB();
}
}
public class AndroidFactory : AbstractFactory
{
public override IProductA CreatProductA()
{
return new AndroidProductA();
}
public override IProductB CreatProductB()
{
return new AndroidProductB();
}
}
抽象工厂关注的是一个工厂可以创建一组对象,工厂方法是关注一个工厂创建一个对象。
假如有一个三星和小米两个工厂,都可以生厂手机和电视机(这是两个对象),这里就可以使用抽象工厂。工厂方法适用场景就是一个生产手机的工厂,可以创建各种各样品牌的手机,如苹果、小米、三星等等。
原文:https://www.cnblogs.com/Huangxiaomao/p/14800976.html