예제 #1
0
        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();
        }
예제 #2
0
        /*
         * 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();
        }
예제 #3
0
        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();
        }