zoukankan      html  css  js  c++  java
  • Abstract Factory与Unity结合

         采用短信示例场景,SGIP,CMPP是联通与移动协议,对应它们有自己的配置文件。ISmsProvider为所有协议接口,IConfig
    配置文件接口。通过在配置文件中配置工厂,在Unity中实现Client类构造函数自动注入。

        /// <summary>

        /// Interface for Factory

        /// </summary>

        /// <remarks>author Louis Liu http://wintersun.cnblogs.com </remarks>

        public interface IFactory

        {

            ISmsProvider CreateSms();

            IConfig CreateConfig();

        }

     

        public interface ISmsProvider

        {

            void ReadConfig(IConfig config);

        }

     

        public interface IConfig

        {

            string ConfigInfo();

        }

     

        public class SGIPFactory : IFactory

        { 

            public ISmsProvider CreateSms()

            {

                return new SGIP();

            }

            public IConfig CreateConfig()

            {

                return new SGIPConfig();

            }

        }

     

        public class SGIP : ISmsProvider

        {

           public void ReadConfig(IConfig config)

           {

               Console.WriteLine("SGIP readconfig with " + config.ConfigInfo());

           }

        }

     

        public class SGIPConfig : IConfig

        {

            public string ConfigInfo()

            {

                return "SGIPCONFIG";

            }

        }

     

        public class CMPPFactory : IFactory

        {

            public ISmsProvider CreateSms()

            {

                return new CMPP();

            }

            public IConfig CreateConfig()

            {

                return new SGIPConfig();

            }

        }

     

        public class CMPP : ISmsProvider

        {

            public void ReadConfig(IConfig config)

            {

                Console.WriteLine("CMPP readconfig with "+config.ConfigInfo());

            }

        }

     

        public class CMPPConfig : IConfig

        {

            public string ConfigInfo()

            {

                return "CMPPConfig";

            }

        }

     

        /// <summary>

        /// SmsPlatform

        /// </summary>

        /// <remarks>author Louis Liu http://wintersun.cnblogs.com </remarks>

        public class SmsPlatform

        {

            private ISmsProvider smsProvider;

            private IConfig config;

            private IFactory factory1,factory2;

     

            // Constructors auto inject

            public SmsPlatform(IFactory factory)

            {

                smsProvider = factory.CreateSms();

                config = factory.CreateConfig();

            }

     

            // Methods

            public void Run()

            {

                smsProvider.ReadConfig(config);

            }

        }

    配置文件:

    xml

    调用代码:

      private static void AnotherWays2()

            {

                IUnityContainer container = new UnityContainer();     

                UnityConfigurationSection section =

                    (UnityConfigurationSection)ConfigurationManager.GetSection("unity");

                section.Containers.Default.Configure(container);    

                SmsPlatform smf = container.Resolve<SmsPlatform>();

                smf.Run();

                Console.ReadLine();

            }


    http://wintersun.cnblogs.com/


     

  • 相关阅读:
    tensorboard使用命令
    FFmpeg安装以及视频转成图片_图片转成视频_以及分辨率转换
    yolo3各部分代码详解(超详细)
    OpenCV+python 彩色图像通道拆分与组合并判断size,shape函数的用法与区别
    基于Keras 的VGG16神经网络模型的Mnist数据集识别并使用GPU加速
    以Mnist为例从头开始自己建立数据集,搭建resnet34,识别Mnist
    2017年Brats 脑肿瘤挑战赛Automatic Brain Tumor Segmentation using Cascaded Anisotropic Convolutional Neural Networks
    2018年BRATS 肿瘤分割挑战赛第三名分割方案One-pass Multi-task Networks with Cross-task Guided Attention for Brain Tumor Segmentation
    脑胶质瘤论文笔记
    .npy文件的保存与加载
  • 原文地址:https://www.cnblogs.com/wintersun/p/1329861.html
Copyright © 2011-2022 走看看