using System;
public interface Color
{
string GetNameColor();
}
public class WhiteColor : Color
{
public string GetNameColor() => "White";
}
public class YellowColor : Color
{
public string GetNameColor() => "Yellow";
}
public class GreyColor : Color
{
public string GetNameColor() => "Grey";
}
public class OrangeColor : Color
{
public string GetNameColor() => "Orange";
}
// Interface Factory để sản xuất màu
public interface ColorFactory
{
Color GetColor();
}
// Các lớp Factory cụ thể cho từng khu vực
public class AsianColorFactory : ColorFactory
{
public Color GetColor()
{
if (new Random().Next(0, 2) == 0)
{
return new WhiteColor();
}
else
{
return new YellowColor();
}
}
}
public class EuropeColorFactory : ColorFactory
{
public Color GetColor()
{
if (new Random().Next(0, 2) == 0)
{
return new GreyColor();
}
else
{
return new OrangeColor();
}
}
}
public class PaintProduction
{
private static void ProducePaint(ColorFactory factory)
{
Color color = factory.GetColor();
Console.WriteLine($"Producing paint of color: {color.GetNameColor()}");
}
public static void Main(string[] args)
{
// Sản xuất sơn cho thị trường châu Á
ColorFactory asianFactory = new AsianColorFactory();
ProducePaint(asianFactory);
// Sản xuất sơn cho thị trường châu Âu
ColorFactory europeFactory = new EuropeColorFactory();
ProducePaint(europeFactory);
}
}