예제 #1
0
            /// <summary>
            /// Compares two instances of this object.
            /// </summary>
            /// <param name="Builder1">A organization group builder.</param>
            /// <param name="Builder2">Another organization group builder.</param>
            /// <returns>true|false</returns>
            public static Boolean operator >(Builder Builder1,
                                             Builder Builder2)
            {
                if (Builder1 is null)
                {
                    throw new ArgumentNullException(nameof(Builder1), "The given organization group must not be null!");
                }

                return(Builder1.CompareTo(Builder2) > 0);
            }
예제 #2
0
        static void Main(string[] args)
        {
            var builder1 = new Builder1();

            var director = new Director(builder1);

            var product1 = director.GetProduct();

            product1.Show();

            Console.ReadLine();
        }
예제 #3
0
            /// <summary>
            /// Compares two instances of this object.
            /// </summary>
            /// <param name="Builder1">A organization group builder.</param>
            /// <param name="Builder2">Another organization group builder.</param>
            /// <returns>true|false</returns>
            public static Boolean operator ==(Builder Builder1,
                                              Builder Builder2)
            {
                // If both are null, or both are same instance, return true.
                if (Object.ReferenceEquals(Builder1, Builder2))
                {
                    return(true);
                }

                // If one is null, but not both, return false.
                if ((Builder1 is null) || (Builder2 is null))
                {
                    return(false);
                }

                return(Builder1.Equals(Builder2));
            }
예제 #4
0
        public void Test()
        {
            var     director = new Director();
            Builder builder  = null;

            builder = new Builder1();
            director.Construct(builder);
            var result1 = builder.GetResult();

            builder = new Builder2();
            director.Construct(builder);
            var result2 = builder.GetResult();

            Assert.AreEqual("Part A", result1.PartOne);
            Assert.AreEqual("Part B", result1.PartTwo);

            Assert.AreEqual("Part X", result2.PartOne);
            Assert.AreEqual("Part Y", result2.PartTwo);
        }
예제 #5
0
    public static void MainRun()
    {
        // Create one director and two builders
        Director director = new Director();

        IBuilder b1 = new Builder1();
        IBuilder b2 = new Builder2();

        // Construct two products
        director.Construct(b1);
        Product p1 = b1.GetResult();

        p1.Display();

        director.Construct(b2);
        Product p2 = b2.GetResult();

        p2.Display();
    }
예제 #6
0
    public static void Main()
    {
        Director director = new Director();

        var b1 = new Builder1();
        var b2 = new Builder2();

        director.SetBuilder(b1);
        director.Construct();
        var p1 = b1.GetResult();

        p1.Display();

        director.SetBuilder(b2);
        director.Construct();
        var p2 = b2.GetResult();

        p2.Display();

        Console.ReadKey();
    }
예제 #7
0
        static void Main(string[] args)
        {
            // 客户找到电脑城老板说要买电脑,这里要装两台电脑。
            // 创建指挥者和构造者
            Director director = new Director();
            Builder  b1       = new Builder1();
            Builder  b2       = new Builder2();

            // 老板叫员工去组装第一台电脑
            director.Construct(b1);
            // 组装完,组装人员搬来组装好的电脑。
            Computer computer1 = b1.GetComputer();

            computer1.Show();

            // 老板叫员工去组装第二台电脑
            director.Construct(b2);
            // 组装完,组装人员搬来组装好的电脑。
            Computer computer2 = b2.GetComputer();

            computer2.Show();

            Console.Read();
        }
    public static void Main( ) 
        {
            // Create one director and two builders
            Director director = new Director( );

            IBuilder b1 = new Builder1( );
            IBuilder b2 = new Builder2( );

            // Construct two products
            director.Construct(b1);
            Product p1 = b1.GetResult( );
            p1.Display( );

            director.Construct(b2);
            Product p2 = b2.GetResult( );
            p2.Display( );
        }
예제 #9
0
        static void Main(string[] args)
        {
            // Abstract factory
            IFactory concreteFactory = new WindowsFactory();
            var      obj1            = concreteFactory.CreateCloneable();
            var      obj2            = concreteFactory.CreateComparable();

            // Builder
            IBuilder builder  = new Builder1();
            var      director = new Director(builder);
            var      product  = director.Construct <IProduct>();

            // Factory method
            Application app      = new DrawingApplication();
            Document    document = app.CreateDocument();

            // Prototype
            Prototype prototype = new ConcretePrototype1();
            Prototype newObject = prototype.Clone();

            // Command
            Receiver receiver = new Receiver();
            Command  command  = new ConcreteCommand(receiver);
            Invoker  invoker  = new Invoker();

            invoker.SetCommand(command);
            invoker.ExecuteCommand();

            // Interpreter
            var context = new Context();

            AbstrcatExpression experssion1 = new NonterminalExpression();
            AbstrcatExpression expression2 = new TerminalExpression();

            experssion1.Interpret(context);
            expression2.Interpret(context);

            // Mediator
            ConcreteMediator m = new ConcreteMediator();

            ConcreteColleague1 c1 = new ConcreteColleague1(m);
            ConcreteColleague2 c2 = new ConcreteColleague2(m);

            m.Colleague1 = c1;
            m.Colleague2 = c2;

            c1.Send("How are you?");
            c2.Send("Fine, thanks");

            // Memoto
            Originator o = new Originator();

            o.State = "On";

            // Store internal state
            Caretaker c = new Caretaker();

            c.Memento = o.CreateMemento();

            // Continue changing originator
            o.State = "Off";

            // Restore saved state
            o.SetMemento(c.Memento);

            // Observer
            ConcreteSubject s = new ConcreteSubject();

            s.Attach(new ConcreteObserver(s, "X"));
            s.Attach(new ConcreteObserver(s, "Y"));
            s.Attach(new ConcreteObserver(s, "Z"));

            // Change subject and notify observers
            s.SubjectState = "ABC";
            s.Notify();
        }
예제 #10
0
            public static void RunMain()
            {
                IBuilder builder1 = new Builder1();
                IBuilder builder2 = new Builder2();
                Director director = new Director();
                director.Constructor(builder1);

                Product product = builder1.GetResult();
                product.Display();

                director.Constructor(builder2);
                product = builder2.GetResult();
                product.Display();

            }