• 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");
            }
        }
  • 相关阅读:
    链表面试题Java实现【重要】
    数据结构Java实现05----栈:顺序栈和链式堆栈
    数据结构Java实现06----中缀表达式转换为后缀表达式
    数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
    栈和队列的面试题Java实现,Stack类继承于Vector这两个类都不推荐使用
    MySQL多表查询之外键、表连接、子查询、索引
    MySQL字符串函数、日期时间函数
    sqlplus登录、连接命令
    LeetCode 68 Text Justification
    cocos2d触摸事件处理机制(2.x和3.x变化)
  • 原文地址:https://www.cnblogs.com/chenggg/p/10693585.html
Copyright © 2020-2023  润新知