假设我们有一个简单的Holder类,它包装了T类型的值。我们可以这样定义它:
public class Holder<T> { |
Holder<T>充当容器来保存和管理任何类型T的值。
假设有getSupplierByZipCode方法:
public void getSupplierByZipCode(String zip, Boolean result) { |
调用这个方法:
Boolean result = false; |
由于 Java 的按值传递语义,我们传递给getSupplierByZipCode()的结果布尔值实际上并没有改变。
使用泛型值对象Holder<T>:
Holder<Boolean> resultHolder = new Holder<>(false); |
按照DDD值对象定义,getSupplierByZipCode方法中
if (zip.startsWith("9")) { |
这段代码应该纳入到Holder<T>中,这样把Holder<T>从通用意义转为领域意义的值对象,是一个与邮编ZIP相关业务逻辑的业务值对象。