有效 class 层次结构?
Valid class hierarchy?
以下 class 层次结构对 TDD 有效吗?我有两个相关的 class 层次结构,我需要在每个创建者中使用一种类型的信息对象。你知道更好地做到这一点的通用模式吗(也许使用泛型)?这是可测试的吗?
namespace ClassTest
{
interface IProjectInfo
{
void Info1();
void Info2();
}
class ProjectAInfo : IProjectInfo
{
public ProjectAInfo(string projectAData)
{
ProjectAData = projectAData;
}
public string ProjectAData { get; private set; }
public void Info1() { }
public void Info2() { }
}
class ProjectBInfo : IProjectInfo
{
public ProjectBInfo(string projectBData)
{
ProjectBData = projectBData;
}
public string ProjectBData { get; private set; }
public void Info1() { }
public void Info2() { }
}
interface IProjectCreator
{
void Create1();
void Create2();
}
class ProjectACreator : IProjectCreator
{
public ProjectACreator(ProjectAInfo projectAInfo)
{
ProjectAInfo = projectAInfo;
}
public ProjectAInfo ProjectAInfo { get; private set; }
public void Create1() { }
public void Create2() { }
}
class ProjectBCreator : IProjectCreator
{
public ProjectBCreator(ProjectBInfo projectBInfo)
{
ProjectBInfo = projectBInfo;
}
public ProjectBInfo ProjectBInfo { get; private set; }
public void Create1() { }
public void Create2() { }
}
}
信息和创建者 class共享通用界面。创建者需要信息 class 才能运行。
谢谢!
这不是 TDD。使用 TDD,目的是先编写测试。如果您先编写测试,那么 class 层次结构将从该测试中产生,并且它将是可测试的。为了更好的理解TDD,请看一下:
如果您的问题只是:这是可测试的吗?是的,可以测试。
以下 class 层次结构对 TDD 有效吗?我有两个相关的 class 层次结构,我需要在每个创建者中使用一种类型的信息对象。你知道更好地做到这一点的通用模式吗(也许使用泛型)?这是可测试的吗?
namespace ClassTest
{
interface IProjectInfo
{
void Info1();
void Info2();
}
class ProjectAInfo : IProjectInfo
{
public ProjectAInfo(string projectAData)
{
ProjectAData = projectAData;
}
public string ProjectAData { get; private set; }
public void Info1() { }
public void Info2() { }
}
class ProjectBInfo : IProjectInfo
{
public ProjectBInfo(string projectBData)
{
ProjectBData = projectBData;
}
public string ProjectBData { get; private set; }
public void Info1() { }
public void Info2() { }
}
interface IProjectCreator
{
void Create1();
void Create2();
}
class ProjectACreator : IProjectCreator
{
public ProjectACreator(ProjectAInfo projectAInfo)
{
ProjectAInfo = projectAInfo;
}
public ProjectAInfo ProjectAInfo { get; private set; }
public void Create1() { }
public void Create2() { }
}
class ProjectBCreator : IProjectCreator
{
public ProjectBCreator(ProjectBInfo projectBInfo)
{
ProjectBInfo = projectBInfo;
}
public ProjectBInfo ProjectBInfo { get; private set; }
public void Create1() { }
public void Create2() { }
}
}
信息和创建者 class共享通用界面。创建者需要信息 class 才能运行。
谢谢!
这不是 TDD。使用 TDD,目的是先编写测试。如果您先编写测试,那么 class 层次结构将从该测试中产生,并且它将是可测试的。为了更好的理解TDD,请看一下:
如果您的问题只是:这是可测试的吗?是的,可以测试。