我知道设计模式是由设计而不是由特定代码设置的,但有时我会担心我过多地弯曲模式并且不再遵循设计。
例如,规范模式如下所示:
public interface ISpecification<T>
{
bool IsSatisfiedBy(T candidate);
}
但对我来说,这不是很可读:
_customerAccountIsActive
.And(_hasReachedRentalThreshold)
.And(_customerAccountHasLateFees)
.IsSatisfiedBy(this);
所以我将其更改为在构造函数中传递候选人:
public abstract class Specification<TEntity> : ISpecification<TEntity>
{
protected TEntity _candidate;
public Specification(TEntity candidate)
{
_candidate = candidate;
}
public bool IsSatisfied()
{
return IsSatisfiedBy(_candidate);
}
}
我什至重载了布尔运算符,所以我可以写这样的东西:
_customerAccountIsActive
&& _customerAccountHasLateFees
&& _hasReachedRentalThreshold
现在我想从对设计模式更有经验的人那里知道我是否扭曲了太多以及我应该注意哪些风险。