Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
28. Mär 2012
Hab grade was Neues gelernt. :shock:
X := nil;
if @@X <> nil then
Beep;
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
28. Mär 2012
Hab ich was Anderes behauptet?
var
X: TNotifyEvent;
if Assigned(X) then
Beep;
if (TMethod(X).Code <> nil) or (TMethod(X).Data <> nil) then
Beep;
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
28. Mär 2012
Wofür Assigned einen Vorteil bietet.
> Methodenzeiger
Diese bestehen intern aus 2 Zeigern, also ist ein direktes Prüfen auf nil nicht möglich.
Und wöllte man die internen Zeiger prüfen, dann müßte man sich den Methodenzeiger erstmal in einen lesbaren Typen casten, welcher Zugriff auf die beiden Felder bietet.
> Datenzeiger (Objektinstanz) und Codezeiger (Zeiger auf die Methode/Prozedur)
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
28. Mär 2012
In Delphi muß es nicht "class static" sein, es reicht schon "class", oder eine ordinäre Prozedur.
Wenn TIrgendeineKlasse die einzige vorhandene Instanz wäre, dann ist AndereKlasse implizit ebenfalls Alleine (ein Singleton).
Und ich hab nie behauptet das währe schon ein Singleton. (noch'n bissl aufmotzen und fert'sch)
Der Billigprogrammierer pappt diesen Code in seine TForm1, und schon hat er...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
28. Mär 2012
Und was macht die öffentliche Funktion oftmals, bei den meisten Singletonpattern?
Die aggregiert einverleibt sich eine Klasseninstanz.
Wenn ich mir jetzt das auf'm Wiki nehm,
das Array und Static wegmach,
private $types;
public function getFruit {
// Lazy initialization takes place here
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
28. Mär 2012
Ja, für sich alleine gesehn ist es kein Singleton, aber
- komisch, es sieht vom Code genau wie die Wiki-Beispiele aus.
- abgesehn davon, daß es dort noch in einer statischen Klassenmethode versteckt ist, mit einer globalen Variable.
(wenn man implizit davon ausgeht, daß es von IrgendeineKlasse nur maximal eine Instanz gibt, dann ist es ein Singleton)
- und zusätzlich wird oftmals noch (was...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
28. Mär 2012
Jupp, ist ein ganz normales und oftgenutztes Verhalten, auch wenn es etwas überdimensioniert ist.
Wird auch gerne für Singletons verwendet. (wenn man es noch etwas aufmotzt)
Wozu soll man etwas schon erstellen, obwohl es jetzt (zur Erstellungszeit) noch nicht oder überhaupt jemals verwendet wird?
z.B. das Free, es prüft selber auch nochmal auf NIL.
function...