最近我一直在尝试遵循 TDD 方法,这会产生很多子类,以便可以轻松地模拟依赖项等。
例如,我可以说 aRecurringProfile
它又具有可以应用于它的方法/操作,例如MarkAsCancel
、RenewProfile
、MarkAsExpired
等。由于 TDD,这些被实现为“小”类,例如MarkAsCancelService
等。
为可以在 a 上执行的各种方法/操作创建一个“外观”(单例)是否有意义RecurringProfile
,例如具有一个 class RecurringProfileFacade
。这将包含方法,这些方法将代码委托给实际的子类,例如:
public class RecurringProfileFacade
{
public void MarkAsCancelled(IRecurringProfile profile)
{
MarkAsCancelledService service = new MarkAsCancelledService();
service.MarkAsCancelled(profile);
}
public void RenewProfile(IRecurringProfile profile)
{
RenewProfileService service = new RenewProfileService();
service.Renew(profile);
}
...
}
请注意,上面的代码不是实际代码,实际代码将使用构造函数注入的依赖项。这背后的想法是,此类代码的使用者不需要知道他们需要调用哪些类/子类的内部细节,而只需访问相应的“外观”。
首先,这是“外观”模式,还是其他形式的设计模式?
如果上述内容有意义,那么接下来的另一个问题是——考虑到它们没有任何特定的业务逻辑功能,你会对这些方法进行单元测试吗?