zoukankan      html  css  js  c++  java
  • 【设计模式】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);
            }
        }
  • 相关阅读:
    简单数列极限证明
    既然已经半退役了,就写点新东西吧
    快速幂(整数+实数)
    D. Constant Palindrome Sum 差分+思维
    排序网络
    ClickHouse数据同步
    C++ 复习
    使用mac查看iphone uuid方法
    15. 蓝绿发布导致需求不能验证
    通过反射获取对象的属性名、属性值
  • 原文地址:https://www.cnblogs.com/laokchen/p/13544086.html
Copyright © 2011-2022 走看看