PureMvc入门必备的六大设计模式之---中介模式(C#版本)

先上代码  逻辑有空在理  有问题的地方还望大神们指教指教

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

    class Program
    {
        static void Main(string[] args)
        {
            Mediator mr = new Mediator();
            Coder cr = new Coder(mr);       //创建的时候把这个实现XXX接口的类塞到字典里
            Boss bs = new Boss(mr);
            Worker wr = new Worker(mr);

            wr.Inter();

            Console.Read();
        }
    }


    public interface IMediator
    {
        void ExcuteCommand(InterFlow IF);
        bool AddMangerObj(InterFlow obj);
    }

    public class Mediator : IMediator
    {
        public Dictionary<string, InterFlow> myMangerObj;
        public Mediator() {
            myMangerObj = new Dictionary<string, InterFlow>();
        }


        //在星状图的非原点创建时加入原点事件的处理中心
        public bool AddMangerObj(InterFlow obj) {
            var className = obj.GetType().ToString();
            if (!myMangerObj.ContainsKey(className)) {
                myMangerObj[className] = obj;
                return true;
            }
            return false;
        }

        public void ExcuteCommand(InterFlow IF)
        {
            Console.WriteLine(IF.GetType().ToString());//注意这里如果有命名控件则会出现xxx.xxx的情况  具体自己打印试效果
            switch (IF.GetType().ToString())
            {
                case "Worker":
                    myMangerObj["Boss"].Inter();
                    break;
                case "Coder":
                    myMangerObj["Worker"].Experession();
                    break;
                case "Boss":
                    myMangerObj["Coder"].Inter();
                    break;
                default:
                    return;
            }
        }
    }


    public abstract class InterFlow
    {
        protected IMediator mediator;
        protected InterFlow(IMediator IM) {
            mediator = IM;
            IM.AddMangerObj(this);
        }
        public abstract void Inter();
        public abstract void Experession();
    }

    public class Worker : InterFlow
    {
        public Worker(IMediator M) : base(M) {
        }
        public override void Inter()
        {
            Console.WriteLine("打工赚钱");
            mediator.ExcuteCommand(this);
        }

        public override void Experession()
        {
            Console.WriteLine("无聊");
        }

    }

    public class Coder : InterFlow
    {

        public Coder(IMediator M) : base(M) {

        }

        public override void Experession()
        {
            Console.WriteLine("码字的");
        }

        public override void Inter()
        {
            Console.WriteLine("恰屎");

        }
    }

    public class Boss : InterFlow
    {
        public Boss(IMediator M) : base(M) { }

        public override void Experession()
        {
            Console.WriteLine("收钱的");

        }

        public override void Inter()
        {
            Console.WriteLine("icu");
        }
    }

 

posted on 2019-04-12 00:45  深秋大街道  阅读(139)  评论(0编辑  收藏  举报

导航