09.05.2012

Quick & Dirty - Initialisierung einer unveränderlichen Map

Dem einen oder anderen Entwickler wird vielleicht die Initialisierung einer Map als Konstante in einer Klasse über den Weg gelaufen sein.

Für die Realisierung sind unterschiedliche Wege denkbar. Zum einen bietet sich die Initialisierung durch einen statischen Block an, so dass die Map beim Laden der Klassen innerhalb des Blocks initialisiert wird. Das ist ein möglicher Weg, der sicherlich auch legitim ist.

Eine andere Möglichkeit, die an dieser Stelle aufgezeigt werden soll, ist die Initialisierung mit Hilfe einer anonymen Klasse.

Als Beispiel hält diesmal ein kleiner Imbiss her der verschiedene Gerichte auf der Speisekarte hat.


Der Imbiss (SnackPoint) verkauft verschiedene Snacks, die global in einer Enumeration (Snack) definiert sind. Wird eine Bestellung ausgeführt, bekommt der Nutzer über den Rückgabewert der Methode mitgeteilt welchen Betrag er nun bezahlen muss. Sollte ein Snack nicht vorhanden sein, so wird eine SnackNotAvailableException ausgelöst. Getestet wird die kleine Anwendung mit Hilfe eines einfachen JUnit Tests.

Der für diesen Post spannende Teil ist allerdings nur die Initialisierung der Speisekarte (MENU). Der kleine Snackpoint ist ein global operierendes Unternehmen, der in allen Fillialen die gleiche Speisekarte mit gleichen Preisauszeichnungen anbietet. Daher sollte diese als statische Konstante hinterlegt werden.


Die Initialisierung soll ja nun, wie oben bereits beschrieben, über eine anonyme Klasse realisiert werden.



Nun müssen nur noch die Daten eingepflegt werden. Innerhalb der anonymen Klassen wird also ein Instanzinitalisierer (Initialisierungsblock) angelegt, der genau für eine solche Arbeit geeignet ist.


Damit ist die Speisekarte initialisert und kann bereits genutzt werden. Spannend wäre nun ja noch, dass die Speisekarte auch nach außen hin sichtbar ist und von jedem Kunden vor Bestellung eingesehen werden kann. Wird die Map allerdings öffentlich gemacht, besteht die Gefahr, dass diese auch von außen geändert wird. Eine Lösung wäre, dass die Map über die Collections-API als unveränderbar gekennzeichnet wird.


Sollte der Versuch gewagt werden die Speisekarte von außen zu ändern, so wird dieser Versuch mit einer UnsupportedOperationException fehlschlagen.


Damit ist die Speisekarte initialisiert, von außen im Lesezugriff nutzbar und trotzdem nicht veränderlich.

06.05.2012

Chilli-Cheese-Steak-Sandwich mit Zwiebel-Pflaumen-Confit

Nach einem erfolgreichen Tag am See, saß ich heute in der Küche und habe einen Blick in die Weber Grill Bibel geworfen.
Da ist mir doch ein Rezept ins Auge gefallen, welches mir als Grundlage für ein leckeres Abendessen gedient hat. Das Rezept im Buch war mir nur nicht raffiniert genug, also habe ich mir gedacht, dass man dies doch noch aufpeppen kann.



Grundlage für das Abendessen sollten Rumpsteak, Zwiebeln, Pflaumen und eine Käsesoße (in etwa wie beim Chilli-Cheese-Burger) sein.

Angefangen habe ich mit der Vorbereitung des Fleisches. Da gab es zwei schöne Rumpsteaks, die gesalzen und vakuumiert wurden.


Während die beiden Stücke im Wasserbad bei knapp 56°C ca. 40 Minuten vor sich baden durften wurde die Käsesoße gekocht. Im wesentlichen besteht diese aus einer Grundsoße (angedickter Mehlschwitze), die mit Creme fraiche angereichert worden ist. Dazu wurde noch ein gewürfelter Cheddar gegeben (der geriebene Cheddar ist für das Überbacken zu späterem Zeitpunkt).


Um eine leichte Schärfe in die Soße zu bekommen wurden einfache Chillies gehackt und mit der Soße aufgekocht.


Die Soße wird während der Garzeit des Fleisches weiter warm gestellt, so dass diese noch warm / heiß auf die Brote verteilt werden kann.

Für das Zwiebel-Confit wurde ein wenig Zucker karamellisiert und die Zwiebeln in Ringe geschnitten.


Die Ringe werden zu dem Zucker gegeben und mit ein wenig Pflaumenmus und rauchiger BBQ-Soße glasig gedünstet.


Irgendwann sieht das Ergebnis hoffentlich wie folgt aus.


Derweil sollte das Fleisch eigentlich gegart sein und kann in der Pfanne kurz gebräunt werden.


Während das Fleisch nach dem Braten ruht, kann das frische Brot, in diesem Fall Ciabatta, aufgeschnitten werden.


Das Fleisch wird im Anschluss dünn aufgeschnitten und mit einer Schicht Käsesauce auf das Brot gebracht.


Der Garpunkt lässt sich in dieser Aufnahme gut erkennen. Gleichmäßig und butterzart. Im Anschluss wird der geriebene Cheddar auf dem Fleisch verteilt und das Sandwich in den Backofen bugsiert.


Mit einer weiteren Schicht Käsesauce und dem Confit wird das Sandwich abgerundet.


Dann nur noch zuklappen und fertig.


Dazu gab es heute eine Flasche Augustiner Edelstoff, lecker, lecker, lecker...


Ich wollte es eigentlich nicht schreiben. Aber an dieser Stelle passt es wie die Faust aufs Auge. Das war leider geil...