factory - 我们可以删除以下工厂类中的条件吗?
问题描述
下面是工厂类,我想去掉 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.
解决方案
推荐阅读
- ip - 将较大的 CIDR(例如 /16)转换为 /24 的列表
- python - 如何通过函数将多个键与字典中的一个值配对?
- c# - 如何在 Visual Studio 2022 预览版中禁用 CS1514
- browser - 是否有任何可行的方法来阻止某些网络浏览器访问我的网站?
- matlab - 通过函数输出对 MatLab 结构体数组进行条件索引
- sas - SAS 编程 || 长程序的捷径
- postgresql - 嵌套 Hasura GraphQL Upsert 突变有没有办法停止嵌套冲突?
- asp.net-core - 公共交通动态事件发布(json事件)的问题
- stackblitz - Luxon 没有在带有 typescript 的 stackblitz 中运行
- html - 如何单独设置 ACF 的 select 字段的元素样式