zoukankan      html  css  js  c++  java
  • 6.使用选项框架解耦服务与配置

    一、特性

    支持单例模式读取配置
    支持快照
    支持配置变更通知
    支持运行时动态修改选项值
     
    二、设计原则
    接口分离原则 (ISP) ,我们的类不应该依赖它不使用的配置
    关注点分离 (SoC),不同组件、服务、类之间的配置不应相互依赖或耦合
     
    三、建议
    为我们的服务设计 XXXOptions
    使用 IOptions<XXXOptions> 、 IOptionsSnapshot <XXXOptions> 、
    IOptionsMonitor <XXXOptions> 作为服务构造函数的参数
     
    四、代码
    1.定义接口
        public interface IOrderService
        {
            int ShowMaxOrderCount();
        }

    2.实现接口

        public class OrderServiceOptions
        {
        public int MaxOrderCount { get; set; } = 100;
        }
        public class OrderService : IOrderService
        {
            IOptions<OrderServiceOptions> _options;  //以Options的方式传入配置
            public OrderService(IOptions<OrderServiceOptions> options)
            {
                _options = options;
            }
    
            public int ShowMaxOrderCount()
            {
                return _options.Value.MaxOrderCount;
            }
        }

    3.服务注册

    services.Configure<OrderServiceOptions>(Configuration.GetSection("OrderService")); //从配置文件中获取配置信息,也可以从其它方式获取配置信息
    services.AddSingleton<IOrderService, OrderService>();
     
  • 相关阅读:
    Linux shell(3)
    Linux shell 编写(2)
    Linux shell 编写(1)
    团队冲刺(一)
    峦码团队任务表
    电梯演讲&界面展示说明
    第一次小组会议——NABCD讨论
    开发项目&团队介绍
    Linux中查看各文件夹大小命令:du -h --max-depth=1
    shell脚本[] [[]] -n -z 的含义解析
  • 原文地址:https://www.cnblogs.com/Adoni/p/12652941.html
Copyright © 2011-2022 走看看