定义:定义了一个接口用于创建相关或有依赖关系的对象族,而无需明确指定具体类。
// 抽象工厂模式
namespace ConsoleApp1
{
public abstract class WatchFactory
{
public abstract void showPrice();
}
public abstract class PhoneFactory
{
public abstract void showPrice();
}
public class XMWatch : WatchFactory
{
public override void showPrice()
{
Console.WriteLine("XMWatch");
}
}
public class HWPhone : PhoneFactory
{
public override void showPrice()
{
Console.WriteLine("HWPhone");
}
}
public class HWWatch : WatchFactory
{
public override void showPrice()
{
Console.WriteLine("HWWatch");
}
}
public class XMPhone : PhoneFactory
{
public override void showPrice()
{
Console.WriteLine("XMPhone");
}
}
public interface IAbsFactory
{
WatchFactory createWatchFactory();
PhoneFactory createPhoneFactory();
}
public class XMFactory : IAbsFactory
{
public WatchFactory createWatchFactory()
{
return new XMWatch();
}
public PhoneFactory createPhoneFactory()
{
return new XMPhone();
}
}
public class HWFactory : IAbsFactory
{
public WatchFactory createWatchFactory()
{
return new HWWatch();
}
public PhoneFactory createPhoneFactory()
{
return new HWPhone();
}
}
class Program
{
static void Main(string[] args)
{
XMFactory xmFactory = new XMFactory();
ShowPrice(xmFactory);
HWFactory hwFactory = new HWFactory();
ShowPrice(hwFactory);
}
static void ShowPrice(IAbsFactory factory) {
WatchFactory watchFactory = factory.createWatchFactory();
PhoneFactory phoneFactory = factory.createPhoneFactory();
watchFactory.showPrice();
watchFactory.showPrice();
}
}
}