首页 > 解决方案 > 我们可以删除以下工厂类中的条件吗?

问题描述

下面是工厂类,我想去掉 if 条件,所以不需要每次都修改方法。

public class ExceptionHandlersFactory
    {
        public TemplatesExceptionHandler Get(Exception ex)
        {
            if (ex is FusionProVersionNotSupportedException)
            {
                return new FusionProVersionNotSupportedExceptionHandler();
            }
            else if (ex is ConfigFileException)
            {
                return new ConfigFileExceptionHandler();
            }
            else if (ex is DifInterop.DifException)
            {
                return new ConfigFileExceptionHandler();
            }
            else
            {
                return new NormalExceptionHandler();
            }
        }
    }

在客户端,我们传递 Exception 对象

private void OnUnexpectedError(Exception ex)
        {
            var exceptionHandlersFactory = new ExceptionHandlersFactory();
            var handler = exceptionHandlersFactory.Get(ex);
            handler.ProvideMessage(this.lblError, ex);
        }

Client code will throw custom type of exceptions.

标签: factory

解决方案


推荐阅读