37 lines
549 B
D
37 lines
549 B
D
|
module caffeinebeveragewithhook;
|
||
|
|
||
|
import std.stdio : writeln;
|
||
|
|
||
|
abstract class CaffeineBeverageWithHook
|
||
|
{
|
||
|
final void prepareRecipe()
|
||
|
{
|
||
|
boilWater();
|
||
|
brew();
|
||
|
pourInCup();
|
||
|
if (customerWantsCondiments())
|
||
|
{
|
||
|
addCondiments();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void brew();
|
||
|
|
||
|
void addCondiments();
|
||
|
|
||
|
void boilWater()
|
||
|
{
|
||
|
writeln("Boiling water");
|
||
|
}
|
||
|
|
||
|
void pourInCup()
|
||
|
{
|
||
|
writeln("Pouring into cup");
|
||
|
}
|
||
|
|
||
|
bool customerWantsCondiments()
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
}
|