Re: What is "A class which must be subclassed" ?
Re: What is "A class which must be subclassed" ?
- Subject: Re: What is "A class which must be subclassed" ?
- From: Andy Lee <email@hidden>
- Date: Sat, 18 Oct 2008 11:53:43 -0400
Foo might qualify as a class cluster, but personally I don't think it
needs to conform to a named pattern. It's nice when you can borrow
from previously thought-out patterns, but not necessary.
Would it make sense to reorganize so the instantiation is done by the
Bar class?
- (id)fooInstance
{
return [[[[self fooClass] alloc] init] autorelease];
}
Subclasses of Bar could do more complex instantiation of fooClass if
necessary instead of always alloc/init. Just a thought -- it may not
jibe with the semantics of your application.
--Andy
On Oct 18, 2008, at 10:43 AM, Jerry Krinock wrote:
I have written a class which is missing important behaviors that
must be provided by subclasses. I create one like this:
+ (id)fooWithBar:(Bar*)bar_ {
// A Bar instance knows which subclass of Foo is appropriate for
it.
// To find out, send it a -fooClass message.
id instance = [[[bar_ fooClass] alloc] init] ;
return [instance autorelease] ;
}
I'm trying to figure out what to call this. I read in "Cocoa Design
Patterns" [1] about Abstract Classes, but my Foo doesn't seem to be
quite an Abstract Class, since you could create one if you wanted to.
Is there a design pattern that I should be following for this
thing? Or maybe could/should I change it to ^be^ an Abstract
Class? Or maybe I should just leave it as is? Whatever it is, it
works fine for me.
Thanks,
Jerry
[1] http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatterns/chapter_5_section_1.html#/
/apple_ref/doc/uid/TP40002974-CH6-SW6
_______________________________________________
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