Skip to content

Instantly share code, notes, and snippets.

@fengyfei
Created May 30, 2019 06:47
Show Gist options
  • Save fengyfei/93782a4c8f5b6e049300a0e3fc185146 to your computer and use it in GitHub Desktop.
Save fengyfei/93782a4c8f5b6e049300a0e3fc185146 to your computer and use it in GitHub Desktop.
[Dart] Getter/Setter Magic
abstract class VM {
Host get host => _host;
set host(Host h) {
_host = h;
}
Host _host;
void initialize(Host h) {
assert(_host == null);
_host = h;
print('VM initialized');
}
}
class VirtualBox extends VM {
@override
void initialize(Host h) {
super.initialize(h);
assert(host != null);
print('VirtualBox initialized');
}
}
class Host {
Host() {
print('Host startup...');
}
VM get vm => _vm;
set vm(VM v) {
_vm = v;
v.initialize(this);
}
VM _vm;
}
void main() {
Host machine = Host();
machine.vm = VirtualBox();
print('machine.vm is ${machine.vm.runtimeType}');
print('vm.host is ${machine.vm.host.runtimeType}');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment