View code
@ InterfaceBrandingfactory: nsobject
{
}
+ (Brandingfactory *) factory;
-(Uiview *) brandedview;
-(Uibutton *) brandedmainbutton;
-(Uitoolbar *) brandedtoolbar;
@ End
View code
# Define Use_acme
@ Implementation Brandingfactory
+ (Brandingfactory *) Factory
{
# If Defined (use_acme)
Return [[Acmebrandingfactory alloc] init] autorelease];
# Elif Defined (use_siider)
Return [[Sierrabrandingfactory alloc] init] autorelease];
# Else
Return Nil;
# Endif
}
-(Uiview *) brandedview
{
Return Nil;
}
-(Uibutton *) brandedmainbutton
{
Return Nil;
}
-(Uitoolbar *) brandedtoolbar
{
Return Nil;
}
@ End
==================================
View code
@ InterfaceSierrabrandingfactory: brandingfactory
{
}
-(Uiview *) brandedview;
-(Uibutton *) brandedmainbutton;
-(Uitoolbar *) brandedtoolbar;
View code
@ Implementation Sierrabrandingfactory
-(Uiview *) brandedview
{
// Returns a custom view for siider
Return [[Sierraview alloc] init] autorelease];
}
-(Uibutton *) brandedmainbutton
{
// Returns a custom main button for siider
Return [[Sierramainbutton alloc] init] autorelease];
}
-(Uitoolbar *) brandedtoolbar
{
// Returns a custom toolbar for siider
Return [[Sierratoolbar alloc] init] autorelease];
}
@ End
==================================
View code
@ InterfaceAcmebrandingfactory: brandingfactory
{
}
-(Uiview *) brandedview;
-(Uibutton *) brandedmainbutton;
-(Uitoolbar *) brandedtoolbar;
View code
@ Implementation Acmebrandingfactory
-(Uiview *) brandedview
{
// Returns a custom view for Acme
Return [[Acmeview alloc] init] autorelease];
}
-(Uibutton *) brandedmainbutton
{
// Returns a custom main button for Acme
Return [[Acmemainbutton alloc] init] autorelease];
}
-(Uitoolbar *) brandedtoolbar
{
// Returns a custom toolbar for Acme
Return [[Acmetoolbar alloc] init] autorelease];
}
@ End
==================================
Client:
View code
brandingfactory * factory = [brandingfactory factory];
uiview * view = [factory brandedview];
uibutton * button = [factory brandedmainbutton];
uitoolbar * toolbar = [factory brandedtoolbar];