背景 见过很多框架(包括我自己的)都会在实体的定义中包含一个IsValid()方法,用来判断实体的合法性,是否应该这样设计呢?本文就这个问题介绍一点想法,希望大家多批评. 实体能否处于“非法”状态? 实体是否应该包含IsValid()方法的深层次问题是:“实体能否处于非法状态?”.我们来定义一些术语,接下来我就引用这些术语: A模式:实体允许处于非法状态,但是实体要包含一个IsValid()方法进行校验. B模式:实体不允许处于非法状态,业务逻辑必须保证这一点. 关于A模式我不想多说了,A模式本…