使用Latitude类的例子

83 阅读1分钟

通过数据的完整性,我们的意思是 "这个数据被允许采取什么形状?","哪些方法可以被调用,在什么时候?","为了创建这个对象,需要哪些参数和预设条件?"?

方法需要保留一个对象的不变性。它们需要约束存储在对象中的状态,使其最终不会失效。

下面是一个使用Latitude类的例子。

import { ValueObject } from '../../../core/valueObject';
import { Result, TypedResult } from '../../../core/result';

export interface ILatitude {
  value: number;
}

export class Latitude extends ValueObject<ILatitude> {
  value: number;
  
  private constructor (props: ILatitude) {
    super(props);
    this.value = props.value
  }

  // Factory method
  // The latitude must be a number between -90 and 90
  public static create (latitude: ILatitude) : TypedResult<Latitude> {
    if (latitude.value < -90 || latitude.value > 90) {
      return Result.typedFail<Latitude>("Latitude must be within -90 and 90")
    }
    return Result.typedOk<Latitude>(new Latitude(latitude))
  }
}

在这个例子中,为了创建一个纬度对象,我们需要满足传递-90和90之间的数值这一不变性。

其他任何东西都不是有效的纬度。