[DUG] Dumb Friday Question
Neven MacEwan
neven at mwk.co.nz
Fri May 4 16:15:34 NZST 2007
Hi
The solution is to use interfaces, but if you don't it would be
difficult to implement a factory pattern
There is this thing in OO language users which seems to be the muddy
area between scalars and objects,
ie is a TStringList a simple object or a complex scalar, of course it
doesn't help that Delphi garbage collects scalars
but not objects
Maybe i've been writing to much PHP
Neven
>> You guys don't consider a constructor a function then?
>>
>> I think its totally stylistic, if you want to have functions returning
>> objects fine, just make it plain that they do,
>>
>> IMHO
>>
>> Neven
>>
>
> The downside to having "creator function"s returning objects is that you
> have to duplicate the code in TObject.Create to ensure safety, as Struan
> pointed out.
>
> // Regular usage: constructor code guarantees no memory leak possibility
>
> MyObject := TMyObject.Create;
> try
> ...
> finally
> MyObject.Free;
> end;
>
> Replace TMyObject.Create with a creator function and you have to implement
> its safety code again yourself:
>
> // Function returning constructed object requires try/except to be safe
>
> function CreateMyObject: TMyObject;
> begin
> ...
> Result := TMyObject.Create;
> try
> {
> Any code you might put in here requires this encompassing try/except block
> to prevent a memory leak occurring if an exception occurs
> }
> except
> Result.Free;
> raise;
> end;
> end;
>
>
> And the same again for any additional levels of nesting. Not great from the
> POV of encapsulation.
>
> Cheers,
> Carl
>
>
> _______________________________________________
> NZ Borland Developers Group - Delphi mailing list
> Post: delphi at delphi.org.nz
> Admin: http://delphi.org.nz/mailman/listinfo/delphi
> Unsubscribe: send an email to delphi-request at delphi.org.nz with Subject: unsubscribe
>
>
>
More information about the Delphi
mailing list