【设计模式】16.中介者模式

说明:一个很好的模式,解决类互相引用继承的重耦合问题,避免了类无法独立出来,不用继承,不过中介者就要写他们的关系方法。

实现:

public abstract class ABS_paiyou
    {
        //牌友抽象类
        public int MoneyCount { get; set; }

        public abstract void ChangeMoney(int Count, ABS_middle am);
    }

    public class paiyouA : ABS_paiyou
    {
        public override void ChangeMoney(int Count,ABS_middle am) {
            am.AWin(Count);
        }
    }

    public class paiyouB:ABS_paiyou
    {
        public override void ChangeMoney(int Count, ABS_middle am) { 
            am.BWin(Count);
        }
    }

    public abstract class ABS_middle
    {
        //中介者抽象
        protected ABS_paiyou A;
        protected ABS_paiyou B;
        public ABS_middle(ABS_paiyou _a, ABS_paiyou _b)
        {
            A = _a;
            B = _b;
        }

        public abstract void AWin(int count);
        public abstract void BWin(int count);
    }

    public class middle:ABS_middle
    {
        public middle(ABS_paiyou _a, ABS_paiyou _b) : base(_a, _b) { }
        public override void AWin(int count)
        {
            A.MoneyCount += count;
            B.MoneyCount -= count;
        }

        public override void BWin(int count)
        {
            A.MoneyCount -= count;
            B.MoneyCount += count;
        }
    }

    public class test
    {
        public void start()
        {
            ABS_paiyou A = new paiyouA();
            ABS_paiyou B = new paiyouB();
            ABS_middle m = new middle(A,B);
            A.ChangeMoney(1, m);

            B.ChangeMoney(1, m);
        }
    }

 

posted on 2020-08-22 01:36  一个小目标一次坑记录  阅读(113)  评论(0编辑  收藏  举报