Att skapa en klass för varje sorts dryck fungerar ju, men det är ingen vidare bra lösning eftersom du då t.ex. inte kan lägga till nya drycker enkelt utan att lägga till mer kod. Det är heller inte någon särskilt bra idé att stoppa logiken i Beverage-klassen, eftersom det gör klassen onödigt komplicerad och oflexibel.
Vad du nog egentligen är ute efter är en Factory-klass, d.v.s. en klass vars enda syfte är att skapa nya Beverage-objekt. Fördelen med en sån klass är att du kan ha flera olika metoder för att skapa nya Beverage-objekt, t.ex. från en lista av hårdkodade parametrar, från en fil, från en databas, etc, utan att behöva ändra på Beverage-klassen i sig.
Det kan alltså vara något så enkelt som t.ex. (jag kan inte C# utantill, så koden kanske inte är helt korrekt):
class BeverageFactory
{
static public Beverage fromName(string name)
{
switch (name) {
case "Cola": return Beverage("Cola", 5, "Brun sörja"); break;
...
default:
// Felhantering
break;
}
}
}
// Skapa en Cola:
Beverage cola = BeverageFactory.fromName("Cola");