中介者模式

22.中介者模式

    public abstract class AbstractCardPartner// 抽象牌友类
    {
        public int MoneyCount { get; set; }
        protected AbstractCardPartner()
        {
            MoneyCount = 0;
        }
        public abstract void ChangeCount(int count, AbstractMediator mediator);
    }
    public class ParterA : AbstractCardPartner// 牌友A类
    {
        public override void ChangeCount(int count, AbstractMediator mediator)// 依赖与抽象中介者对象
        {
            mediator.AWin(count);
        }
    }
    
    public class ParterB : AbstractCardPartner// 牌友B类
    {
        public override void ChangeCount(int count, AbstractMediator mediator)// 依赖与抽象中介者对象
        {
            mediator.BWin(count);
        }
    }
    public abstract class AbstractMediator// 抽象中介者类
    {
        protected AbstractCardPartner A;
        protected AbstractCardPartner B;
        protected AbstractMediator(AbstractCardPartner a, AbstractCardPartner b)
        {
            A = a;
            B = b;
        }
        public abstract void AWin(int count);
        public abstract void BWin(int count);
    }
    public class MediatorPater : AbstractMediator// 具体中介者类
    {
        public MediatorPater(AbstractCardPartner a, AbstractCardPartner b): base(a, b) { }
        public override void AWin(int count)
        {
            A.MoneyCount += count;
            B.MoneyCount -= count;
        }
        public override void BWin(int count)
        {
            B.MoneyCount += count;
            A.MoneyCount -= count;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            AbstractCardPartner A = new ParterA();
            AbstractCardPartner B = new ParterB(); 
            
            A.MoneyCount = 20;// 初始钱
            B.MoneyCount = 20;

            AbstractMediator mediator = new MediatorPater(A, B);
  
            A.ChangeCount(5, mediator);// A赢了
            Console.WriteLine("A 现在的钱是:{0}", A.MoneyCount);// 应该是25
            Console.WriteLine("B 现在的钱是:{0}", B.MoneyCount); // 应该是15

            B.ChangeCount(10, mediator);// B 赢了
            Console.WriteLine("A 现在的钱是:{0}", A.MoneyCount);// 应该是15
            Console.WriteLine("B 现在的钱是:{0}", B.MoneyCount); // 应该是25
            Console.Read();
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值