class Logger { final String name; bool mute = false; static final Map _cache = {}; factory Logger(String name) { if(_cache.containsKey(name)) { return _cache[name]; } else { final logger = Logger._internal(name); _cache[name] = logger; return logger; } } Logger._internal(this.name); void log(String msg) { if(!mute) { print(msg); } } } main() { var logger = Logger('UI'); logger.log('Button clicked'); }