Re: OO idiom avoiding switch and if
Re: OO idiom avoiding switch and if
- Subject: Re: OO idiom avoiding switch and if
- From: Sherm Pendley <email@hidden>
- Date: Thu, 9 Apr 2009 23:20:48 -0400
On Thu, Apr 9, 2009 at 9:45 PM, Jeffrey Oleander <email@hidden> wrote:
>
> There's a programming idiom to avoid using complex if statements and
> switch/case statements, and instead to just send a message to a different
> class of object.
>
> I'm doing some parsing of an old text data format which
> has a hierarchy with a record and then sub-records and
> sub-sub records, 1 per "line". Each is structured as
> a type, nesting level number and then various kinds of
> values depending thereon. What I'm agonizing over is
> how best to handle invoking the processing for each
> sub-record type in Objective-C. This would seem to
> require having a bunch of classes with names like
> JGRecordTypeParser and then I might do something like:
> NSString * valueParserClassPrefix = @"JG";
> NSString * valueParserClass = [[valueParserClassPrefix
> stringByAppendingString:recordSubType] stringByAppendingString:@"Parser"];
> [[NSClassFromString(valueParserClass) alloc] initWithTokens:tokens
> recordType:recordType level:aLevel];
> or some such.
>
In general, a polymorphic approach as in your first example is usually
recommended over a switch. It's considered "good OOP," and I don't think
it's messy at all. In fact, I think that constructing the class name like
that is a very elegant use of the dynamic nature of the Objective-C run
time. It also follows the Cocoa convention of establishing and using naming
patterns.
sherm--
--
Cocoa programming in Perl: http://camelbones.sourceforge.net
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden