说明:一个很好的模式,解决类互相引用继承的重耦合问题,避免了类无法独立出来,不用继承,不过中介者就要写他们的关系方法。
实现:
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); } }