Tag: 工厂方法

以类型通用/不可知方式实现generics方法的最佳方法

假设我们有一个带有这种签名的generics方法: T Obfuscate(T value) where T : IConvertible 我正在为IConvertible设置类型约束,所以这个方法可以消化简单的值类型以及字符串。 让我们忘记一下,也可以提供枚举…… 我想避免这样的实现,它将检查实际的参数类型以执行正确的处理。 // Please no GOD METHODS public T Obfuscate(T value) where T : IConvertible { if (value is int) { … } if (value is string) { … } } 这肯定是工厂方法的气味,必须调用特定的实现提供程序,但仍然需要进行类型检查。 对于这种情况,您认为最好的(希望是通用方法)是什么? 为什么是通用方法? 我决定使用generics方法,因此它总是返回正确的类型,而不需要在调用代码时强制转换方法。

工厂方法返回null是否可以?

我想知道这里的最佳做法。 如果工厂方法无法创建任何内容,返回null是一种好习惯吗? 这是一个例子: ICommand command = CommandFactory.CreateCommand(args); if (command != null) command.Execute(); else // do something else if there is no command 我想,另一种方法是返回NullCommand或其他东西,但最佳做法是什么?

switch语句是否适用于工厂方法? C#

我想返回一个接口,并在switch语句中我想设置它。 这是一个糟糕的设计吗? private IResultEntity GetEntity(char? someType) { IResultEntity entity = null; switch (someType) { case ‘L’: //life entity = new LifeEntity(); break; case ‘P’: //property entity = new PropertyEntity(); break; case ‘D’: //disability entity = new DisabilityEntity(); break; case ‘C’: //credit card entity = new CreditCardEntity(); break; } return entity; }