是否有已知的设计模式或反模式用于按执行路径对scnarios进行隐式分类



当您在基类中保留所有所需属性的并集而不创建专用派生子类时,是否有一种方法的设计模式或反模式。不同的情况由不同的执行路径处理,这是通过该属性上的条件集实现的。让我举例说明。假设您有公共类Figure:

public class Figure
{
public double? Radius { get; set; }
public double? A { get; set; }
public double? B { get; set; } 
public double GetArea()
{
if (Radius != null)
return Math.PI * Radius.Value * Radius.Value;

if (A != null && B != null)
return A.Value * B.Value;
else if (A != null)
return A.Value * A.Value;
else if (B != null)
return B.Value * B.Value;
else 
return double.NaN;
}
}

在这个类中,您有一个属性的并集和一个检查它们的GetArea方法,而不是类层次结构。根据执行路径的不同,Figure实例可以是正方形、矩形或圆形。

这个例子被举到了极致。在我们的业务应用程序的更复杂的背景下,这种方法的支持者认为,它允许灵活地声明不同的类的子类型(例如,订单或税收(,而无需添加复杂的类型层次结构,也无需明确保留所有子类。所以我很好奇这是否是一种已知的设计模式。

这实际上取决于您的需求。通常最好创建专用的派生子类,因为它是分离的,而且易于理解。

但我同意,在某些情况下,在一个类中维护所有流可能更容易。

至于你的问题——没有这样的设计模式,或者反模式。(至少目前(

最新更新