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");
            }
        }
  • 相关阅读:
    IIS7中的几种身份鉴别方式(一)Basic身份验证
    IIS7中的几种身份鉴别方式(二)集成身份验证
    java集合
    SharePoint 2010中welcome page的设置细节
    SharePoint中使用Linq出现未将对象引用到实例化的解决方法
    SharePoint 2010中关于An error was encountered while retrieving the user profile的处理方式记录
    The Need for an Architectural Body of Knowledge
    The Softer Side of the Architect
    Event Receivers 学习小结
    使用SmtpClient发送带图片的邮件的代码实现
  • 原文地址:https://www.cnblogs.com/chenggg/p/10693585.html
Copyright © 2011-2022 走看看