Exemplo n.º 1
0
        public void Should_John_Send_Meeting_Message()
        {
            _head1.Send("Meeting on Tuesday, please all ack");

            _head1.ReceivedMessage.Should().BeEmpty();
            _branch.ReceivedMessage.Should().Be("David received from John: Meeting on Tuesday, please all ack");
            _head2.ReceivedMessage.Should().Be("Lucy received from John: Meeting on Tuesday, please all ack");
        }
Exemplo n.º 2
0
    static void MainRun()
    {
        Mediator m = new Mediator();
        // Two from head office and one from a branch office
        Colleague  head1   = new Colleague(m, "John");
        ColleagueB branch1 = new ColleagueB(m, "David");
        Colleague  head2   = new Colleague(m, "Lucy");

        head1.Send("Meeting on Tuesday, please all ack");
        branch1.Send("Ack");      // by design does not get a copy
        m.Block(branch1.Receive); // temporarily gets no messages
        head1.Send("Still awaiting some Acks");
        head2.Send("Ack");
        m.Unblock(branch1.Receive); //open again
        head1.Send("Thanks all");
    }
Exemplo n.º 3
0
        public void Should_David_Send_Ack_Message()
        {
            _branch.Send("Ack");

            _branch.ReceivedMessage.Should().BeEmpty();
            _head1.ReceivedMessage.Should().Be("John received from David: Ack");
            _head2.ReceivedMessage.Should().Be("Lucy received from David: Ack");
        }
Exemplo n.º 4
0
        /// <summary>
        /// 中介者模式
        /// </summary>
        private static void HandleMediator()
        {
            AbstractMediator mediator = new QQMediator();

            AbstractColleague colleague = new Colleague(mediator);

            colleague.UserName = "******";

            AbstractColleague colleague2 = new Colleague(mediator);

            colleague2.UserName = "******";

            mediator.Add(colleague);
            mediator.Add(colleague2);

            //发送消息
            colleague.Send("灵儿", "你好");
            colleague.Send("紫涵", "早上好~");
            Console.Read();
        }
Exemplo n.º 5
0
        public void BidirectionalCommunication()
        {
            // Send a message to colleague2
            Assert.IsTrue(_colleague1.Send("hi", _colleague2));

            // Send a message back to colleague1
            Assert.IsTrue(_colleague2.Send("hello", _colleague1));

            // Message history is present in colleague2 received from colleague1
            Assert.IsTrue(((ConcreteColleague2)_colleague2).MessageHistory.Contains("hi"));

            // Message history is present in colleague1 received from colleague2
            Assert.IsTrue(((ConcreteColleague1)_colleague1).MessageHistory.Contains("hello"));
        }
        public void Mediator_Test()
        {
            var mediator = new Mediator();
            var A        = new Colleague(mediator);
            var B        = new Colleague(mediator);

            mediator.colleagueA = A;
            mediator.colleagueB = B;

            A.Message = "Mike";
            A.Send();

            var lastMsg = B.LastMessage;

            Assert.IsTrue(lastMsg.Contains(A.Message));
        }
Exemplo n.º 7
0
    public void Main()
    {
        var m = new Mediator();
        // Two from head office and one from a branch office
        var head1 = new Colleague(m, "John");
        var branch1 = new ColleagueB(m, "David");
        var head2 = new Colleague(m, "Lucy");

        head1.Send("Meeting on Tuesday, please all ack");
        branch1.Send("Ack"); // by design does not get a copy
        m.Block(branch1.Receive); // temporarily gets no messages
        head1.Send("Still awaiting some Acks");
        head2.Send("Ack");
        m.Unblock(branch1.Receive); // open again
        head1.Send("Thanks all");
    }