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>();
     
  • 相关阅读:
    文件上传
    大三寒假学习进度笔记Day16
    大三寒假学习进度笔记Day15
    大三寒假学习进度笔记Day14
    大三寒假学习进度笔记Day13
    大三寒假学习进度笔记Day12
    大三寒假学习进度笔记Day11
    大三寒假学习进度笔记Day10
    Java命名规范
    架构漫谈阅读笔记03
  • 原文地址:https://www.cnblogs.com/Adoni/p/12652941.html
Copyright © 2011-2022 走看看