问题:如何根据类型处理替代方案?
解决方案:当相关的替代或行为因类型(类)而异时,将行为(使用多态操作)的责任分配给行为变化的类型。
多态性是面向对象设计的基本原则。在这种情况下,原则与(以及其他)战略策略模式密切相关。
Customer类的构造函数 将 ICustomerUniquenessChecker接口作为参数:
public Customer(string email, string name, ICustomerUniquenessChecker customerUniquenessChecker)
{
this.Email = email;
this.Name = name;
var isUnique = customerUniquenessChecker.IsUnique(this); // doing - initiate and coordinate actions with other objects
if (!isUnique)
{
throw new BusinessRuleValidationException("Customer with this email already exists.");
}
this.AddDomainEvent(new CustomerRegisteredEvent(this));
}
|
我们可以根据需要提供此接口的不同实现。一般来说,当我们在我们的系统中具有相同输入和输出(在结构方面)的不同算法时,这是非常有用的方法。