1 package com.guinetik.hexafun.examples.counter;
2
3 /**
4 * Immutable counter value object.
5 */
6 public record Counter(int value) {
7 public Counter increment() {
8 return new Counter(value + 1);
9 }
10
11 public Counter decrement() {
12 return new Counter(value - 1);
13 }
14
15 public Counter add(int amount) {
16 return new Counter(value + amount);
17 }
18
19 public static Counter zero() {
20 return new Counter(0);
21 }
22
23 public static Counter of(int value) {
24 return new Counter(value);
25 }
26 }