Restricts write access to class attributes by encapsulating them in a separate data object.
Prevents unintended modification after initialization.
class CircleData {
final double radius;
final String color;
CircleData(this.radius, this.color);
}
class Circle {
final CircleData _data; // immutable after construction
Circle(double radius, String color) : _data = CircleData(radius, color);
double get area => 3.14159 * _data.radius * _data.radius;
String get color => _data.color;
}
// Usage
final circle = Circle(5, 'red');
print(circle.area); // 78.53975
print(circle.color); // red
// _data fields cannot be changed after construction