zoukankan      html  css  js  c++  java
  • 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");
            }
        }
  • 相关阅读:
    JSON 字符串 与 java 对象的转换
    DNS解析过程详解
    全面了解移动端DNS域名劫持等杂症:原理、根源、HttpDNS解决方案等
    TCP Send函数的阻塞和非阻塞,以及TCP发送数据的异常情况
    基于TCP协议的应用层的ACK机制
    Golang的反射reflect深入理解和示例
    C/C++中struct中内存对齐规则
    Go 包依赖管理工具 —— govendor
    什么是幂等?什么情况下需要考虑幂等?怎么解决幂等的问题?
    Golang 中间件简介 MiddleWare
  • 原文地址:https://www.cnblogs.com/chenggg/p/10693585.html
Copyright © 2011-2022 走看看