zoukankan      html  css  js  c++  java
  • 程序如何实现可扩展性

    参考借鉴ABP中提供的扩展性

    持续更新....

    实现一:

    定义一个接口

    public interface IMessageWriter
    {
        string Write();
    }
    

    定义一个实现,这个实现是要被另外的一个实现类代替的:

    public class ConsoleMessageWriter : IMessageWriter, ITransientDependency
    {
        public string Write()
        {
            return "ConsoleMessageWriter.Write";
        }
    }
    

    替代的实现类:

    [Dependency(ReplaceServices = true)] // 调用了asp.net core中的services.replace实现
    public class ReplaceMessageWriter : IMessageWriter, ITransientDependency
    {
        public string Write()
        {
            return "ReplaceMessageWriter.Write";
        }
    }
    

    这里的ITransientDependency接口Dependency特性都是ABP中的。

    实现二:

    接口定义:

    public interface IBrandProvider
    {
        string AppName { get;  }
    }
    

    默认实现类:

    public class DefaultBrandProvider : IBrandProvider, ITransientDependency
    {
        public DefaultBrandProvider() { }
    
        public virtual string AppName { get => "DefaultBrandProvider"; }
    }
    

    替换类:

    [Dependency(ReplaceServices = true)] //如果没有此特性,那么接口的实现类有两个。
    public class ReplaceBrandProvider : DefaultBrandProvider
    {
        public override string AppName { get => "ReplaceBrandProvider"; }
    }
    

    实现三:

    参考:扩展与解耦:Option模式与依赖注入结合

  • 相关阅读:
    2016 大连网赛
    LightOJ 1012 简单bfs,水
    Pyhton学习——Day30
    Client初见——python
    Server初见——python
    Pyhton学习——Day29
    Pyhton学习——Day28
    Pyhton学习——Day27
    Pyhton学习——Day26
    函数基础作业
  • 原文地址:https://www.cnblogs.com/zhiyong-ITNote/p/12695180.html
Copyright © 2011-2022 走看看