static void Main(string[] args)
        {
            //抽象工厂
            // CreateHumanTest();

            //简单抽线工厂
            //CreateHumanSimple();

            //多个工厂模式
            // CreateMultiFactory();

            //工厂实现单例
            //SingletonFactory.getSingleton() .doSomeThing();

            //工厂用作缓存对象
            //FactoryCacheTest();

            //Console.WriteLine("time=" + DateTime.Now.Ticks);
            //Creator creator = new ConcreteCreator();
            //Product product = creator.createProduct< ConcreteProduct1>();
            //product.method2();

            //Console.WriteLine("time=" + DateTime.Now.Ticks);

            //原型模式demo
            //   Client.TestFunc();

            //深浅拷贝的demo
            //TestClone clone1 = new TestClone();
            //TestClone clone2 = new TestClone();
            //clone1.testStr.Add("name1");
            //clone2.testStr.Add("name1");
            //Console.WriteLine("clone1=" + clone1.testStr.Count+
            //    ",clone2=" + clone2.testStr.Count
            //    + ",clone1.num=" + clone1.number
            //    + ",clone3.num=" + clone2.number
            //    +clone1.Equals(clone2)
            //    );

            //命令模式demo
            //TestClient.testFunc();

            //责任链模式
            //HandlerDemo.main();

            //策略模式
            //StrategyDemo.main();

            //迭代器模式
            //IteratorDemo.main();

            //观察者模式
            //ObserverDemo.main();

            //访问者模式
            //VisitorDemo.main();

            //解释器模式
            //ExpressionDemo.main();

            //享元模式
            //FlyweightDemo.main();

            //桥梁模式
            //BridgeDemo.main();没有输出

            //建造者模式
            BuilderDemo.main();

            Console.ReadLine();
        }
        static void Main(string[] args)
        {
            BuilderDemo.FirstDemo();

            BuilderDemo.SecondDemo();
        }
        static void Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.DarkBlue;
            Console.BackgroundColor = ConsoleColor.White;
            Console.Write("\n  Demonstration of Mock Repo");
            Console.Write("\n ============================\n");
            Console.ResetColor();


            //fetch the to be built files in the repo to buildstorage
            RepoMock repo = new RepoMock();

            repo.CopyDirectory(repo.storagePath, repo.receivePath);
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.BackgroundColor = ConsoleColor.White;
            Console.Write("\nRepo Send build projects to build server");
            Console.ResetColor();


            Console.Write("\n\n");

            Console.ForegroundColor = ConsoleColor.DarkGreen;
            Console.BackgroundColor = ConsoleColor.White;
            Console.Write("\n  Building .csproj files ");
            Console.Write("\n =========================\n\n");
            Console.ResetColor();
            //starting building process and catch build exception
            BuilderDemo builder = new BuilderDemo();

            try
            {
                builder.BuildCsproj();
            }
            catch (Exception ex)
            {
                Console.ForegroundColor = ConsoleColor.DarkRed;
                Console.BackgroundColor = ConsoleColor.White;
                Console.Write("\n\n  An error occured while trying to build the csproj file.\n  Details: {0}\n\n", ex.Message);
                Console.ResetColor();
            }



            Console.Write("\n  The TestHarness asked the BuildServer for the Dll files");

            DllLoaderExec testharness = new DllLoaderExec();

            //fetch the alreay built dll files to the testers
            testharness.getFiles("*.dll");
            foreach (string file in testharness.files)
            {
                Console.Write("\n  \"{0}\"", file);
            }
            foreach (string file in testharness.files)
            {
                string fileName = Path.GetFileName(file);
                Console.Write("\n  sending \"{0}\" to \"{1}\"", fileName, testharness.TestreceivePath);
                testharness.sendFile(file);
            }
            Console.Write("\n\n");

            Console.Write("\n  Demonstrating Robust Test Loader");
            Console.Write("\n ==================================\n");

            DllLoaderExec.testersLocation = Path.GetFullPath(DllLoaderExec.testersLocation);
            Console.Write("\n  Loading Test Modules from:\n    {0}\n", DllLoaderExec.testersLocation);

            // run load and tests

            string result = testharness.loadAndExerciseTesters();

            Console.Write("\n\n  {0}", result);
            Console.Write("\n\n");
        }