42 lines
835 B
Dart

// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:inject/inject.dart';
const Qualifier brandName = Qualifier(#brandName);
const Qualifier modelName = Qualifier(#modelName);
class CoffeeMaker {
@provide
CoffeeMaker(this._heater, this._pump, this._brand, this._model);
final Heater _heater;
final Pump _pump;
@modelName
final String _model;
@brandName
final String _brand;
String brew() {
_heater.on();
_pump.pump();
print(' [_]P coffee! [_]P');
final String message = 'Thanks for using $_model by $_brand';
_heater.off();
return message;
}
}
abstract class Heater {
void on();
void off();
bool get isHot;
}
abstract class Pump {
void pump();
}