static void Main(string[] args) { //获取形状工厂 AbstractFactory shapeFactory = FactoryProducer.GetFactory("SHAPE"); //获取形状为 Circle 的对象 IShape shape1 = shapeFactory.GetShape("CIRCLE"); //调用 Circle 的 draw 方法 shape1.Draw(); //获取形状为 Rectangle 的对象 IShape shape2 = shapeFactory.GetShape("RECTANGLE"); //调用 Rectangle 的 draw 方法 shape2.Draw(); //获取形状为 Square 的对象 IShape shape3 = shapeFactory.GetShape("SQUARE"); //调用 Square 的 draw 方法 shape3.Draw(); //获取颜色工厂 AbstractFactory colorFactory = FactoryProducer.GetFactory("COLOR"); //获取颜色为 Red 的对象 IColor color1 = colorFactory.GetColor("RED"); //调用 Red 的 fill 方法 color1.Fill(); //获取颜色为 Green 的对象 IColor color2 = colorFactory.GetColor("GREEN"); //调用 Green 的 fill 方法 color2.Fill(); //获取颜色为 Blue 的对象 IColor color3 = colorFactory.GetColor("BLUE"); //调用 Blue 的 fill 方法 color3.Fill(); Console.ReadKey(); }
static void Main(string[] args) { FactoryProducer Fproducer = new FactoryProducer(); AbstractFactory shapeFactory = Fproducer.GetFactory("Shape"); IShape Circle = shapeFactory.GetShape(shape.Circle); Circle.Draw(10); IShape Square = shapeFactory.GetShape(shape.Square); Square.Draw(20); IColor temp = shapeFactory.GetColor(""); AbstractFactory colorFactory = Fproducer.GetFactory("Color"); IColor Red = colorFactory.GetColor("Red"); IColor Blue = colorFactory.GetColor("Blue"); Red.Fill(""); Blue.Fill(""); Console.ReadKey(); }
static void Main(string[] args) { // get nano car AbstractFactory carFactory = FactoryProducer.GetFactory("car"); ICar nanoCar = carFactory.GetCar("nano"); nanoCar.GetSpecifications(); // get white color AbstractFactory colorFactory = FactoryProducer.GetFactory("color"); IColor color = colorFactory.GetColor("white"); color.GetColor(); Console.Read(); }
/* * Este padrão permite a criação de famílias de objetos * relacionados ou dependentes por meio de uma única * interface e sem que a classe concreta seja especificada * É o mais apropriado quando o número e os tipos gerais de * objetos de produtos permanecem constantes, e há diferenças * em produtos específicos famílias * * Quando usar: * - o sistema deve ser independente de qual produto será criado e representado * - o sistema deve ser configurado com uma familia de produto multiplo * - uma família de objetos de produtos relacionados é projetada para ser * usada em conjunto e você precisa impor essa restrição * - voce quer prover uma library de produtos e voce quer revelar apenas suas interfaces * */ static void Main(string[] args) { AbstractFactory shapef = FactoryProducer.GetFactory("shape"); Shapes.IShape circle = shapef.GetShape("circle"); circle.Draw(); Shapes.IShape rectangle = shapef.GetShape("rectangle"); rectangle.Draw(); AbstractFactory colorf = FactoryProducer.GetFactory("color"); Colors.IColor blue = colorf.GetColor("blue"); blue.Fill(); Console.ReadKey(); }