zoukankan      html  css  js  c++  java
  • IOC DI

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Microsoft.Practices.Unity;
    
    namespace ConsoleApplication1 {
        class Program {
            static UnityContainer container = new UnityContainer();
            static void init() {
                container.RegisterType<IPlayer, Player>();
                container.RegisterType<IMediaFile, MediaFile>();
            }
            static void Main(string[] args) {
    
                init();
    
                OperationMain op1 = container.Resolve<OperationMain>();
                op1.PlayMedia();
                OperationMain op3 = container.Resolve<OperationMain>();
                op3.PlayMedia();
    
                //普通方式
                OperationMain op2 = new OperationMain(new Player(), new MediaFile());
                op2.PlayMedia();
    
                Console.Read();
            }
        }
    
        /// <summary>
        /// 用户播放媒体文件
        /// </summary>
        public class OperationMain {
            IMediaFile _mtype;
            IPlayer _player;
    
            public OperationMain(IPlayer player, IMediaFile mtype) {
                _player = player;
                _mtype = mtype;
            }
    
            public void PlayMedia() {
                _player.Play(_mtype);
            }
        }
        /// <summary>
        /// 播放器
        /// </summary>
        public interface IPlayer {
            void Play(IMediaFile file);
        }
        /// <summary>
        /// 默认播放器
        /// </summary>
        public class Player : IPlayer {
            public void Play(IMediaFile file) {
                Console.WriteLine(file.FilePath+"1");
            }
        }
        /// <summary>
        /// 媒体文件
        /// </summary>
        public interface IMediaFile {
            string FilePath {
                get;
                set;
            }
        }
        /// <summary>
        /// 默认媒体文件
        /// </summary>
        public class MediaFile : IMediaFile {
            public string FilePath {
                get;
                set;
            }
        }
    }
    
  • 相关阅读:
    free和delete把指针怎么啦?
    动态内存会被自动释放吗?
    杜绝“野指针”
    有了malloc/free为什么还要new/delete ?
    Linux Shell Bash 带有特殊含义的退出码
    centos中更换jdk的版本
    shift移动变量
    shell script针对参数已经有配置好变量名称
    输入两个数后输出相乘的结果
    输入变量
  • 原文地址:https://www.cnblogs.com/naliang/p/IOC.html
Copyright © 2011-2022 走看看