// 不変条件 if ($balance < 0) throw new DomainException("残高がマイナスです"); } public function withdraw(float $amount): Account { if ($amount <= 0) throw new InvalidArgumentException("金額が正しくありません"); if ($this->balance < $amount) throw new DomainException("残高不足です"); $this->balance -= $amount; } } 口座のルールは口座にマッピング