-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPrototype.dart
More file actions
72 lines (61 loc) · 1.75 KB
/
Prototype.dart
File metadata and controls
72 lines (61 loc) · 1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import 'Builder.dart'
show
CocktailBase,
CoctailTypeGlass,
CoctailTypeOfIce,
CoctailBasicIngredient,
CocktailGarnish;
abstract class IPrototype {
Cocktail clone();
}
class Cocktail implements IPrototype {
String name;
CocktailBase typeGlass;
CoctailBasicIngredient base ;
int makingTime;
List<CocktailGarnish> garnish;
Cocktail({
this.name = 'Mohito',
this.typeGlass = const CocktailBase(CoctailTypeGlass.hurricane, CoctailTypeOfIce.crush) ,
this.makingTime = 8,
this.base = CoctailBasicIngredient.wiskey,
required this.garnish });
factory Cocktail._fromCoctail(Cocktail coctail) {
return Cocktail(
name: coctail.name,
typeGlass: CocktailBase(coctail.typeGlass.typeGlass, coctail.typeGlass.typeOfIce),
makingTime: coctail.makingTime,
base: coctail.base,
garnish: [...coctail.garnish]);
}
@override
String toString() {
var infoStr = 'Название коктейля : $name \n';
infoStr += typeGlass.toString();
infoStr += 'Basic ingredient ${base.toString().split('.')[1]} \n';
infoStr += 'гарнир : (';
garnish.forEach((element) {
infoStr += element.toString().split('.')[1] + ',';
});
infoStr += ')\n';
infoStr += 'Время ожидания : $makingTime min';
return infoStr;
}
@override
Cocktail clone() {
return Cocktail._fromCoctail(this);
}
}
void main(){
var coctail = Cocktail(name: 'Aperol', garnish:<CocktailGarnish>[
CocktailGarnish.mint,
CocktailGarnish.lime
]);
print(coctail);
print('---' * 20);
var newCoctail = coctail.clone();
newCoctail.garnish.add(CocktailGarnish.salt);
print(newCoctail);
print('----' * 4);
print(coctail);
}