値オブジェクトとは

システム固有の値を表現するために表現されたオブジェクト

プリミティブな値を使用した場合

var fullName = 'yasui taisei' ( 姓 名 )

これでも正しく表示される。( 空白の前を姓、後を名とする )

しかし、

var fullName = 'John Smith' ( 名 姓 )

このようにうまく表示できない場合がる。

その場合に、値オブジェクトを使用する。

class fullName
{
	public FullName(string firstName, string lastName)
	{
		FirstName = firstName;
		LastName = lastName;
	}
}

値の性質

これを知ることで、値オブジェクトの理解が深まる

  1. 不変である
var greet = 'こんにちは'
greet.ChangeTo('hello') // => helloになる ✖️
  1. 交換が可能である