我有一个设计问题,其中要求是这样的:
我正在考虑两种设计方案:
你觉得哪个更好,出于什么原因。
答案 0 :(得分:1)
虽然,方法#2遵循OOAD的开放/封闭原则,即您将添加新的接口实现,每次添加新TYPE并且您不会修改现有代码,这是非常安全的因为它不需要测试旧代码/方法。因此,您的代码将打开以进行扩展,但已关闭以进行修改。但是,如果您经常添加新的TYPE,那么方法#2就有意义了。
IMO,在这种情况下,我建议使用方法#1,因为业务要求非常简单,即根据参数类型生成字符串。因此,在我看来,使用界面将过度工程化(如果不经常添加TYPES)。
答案 1 :(得分:1)
最好为此问题语句使用一些设计模式,以使您的代码更加健壮和可重用。我会建议你策略设计模式。它是使用Interface的基于抽象的模式。
基本示例:
public interface IMyStrategy
{
string Generate(string someValue);
}
public class StragegyA : IMyStrategy
{
public string Generate(string somevalue)
{
return /Implementation/;
}
}
public class StragegyB : IMyStrategy
{
public string Generate(string somevalue)
{
return /Implementation/;
}
}
public class MyStrategyContext
{
private readonly IMyStrategy _ImyStrategy;
public MyStrategyContextIMyStrategy(IMyStrategy myStragegy)
{
_ImyStrategy = myStragegy
}
public string GenerateResult(string someValue)
{
return _ImyStrategy .Generate(someValue);
}
}
[Test]
public void GenerateValue()
{
var abc = new MyStrategyContext(new StragegyA());
abc.GenerateResult("hey print");
}