[IOS 下重溫設計模式] – AbstractFactory

來源:互聯網
上載者:User
View Code

@interface BrandingFactory : 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_SIERRA)
return [[[SierraBrandingFactory alloc] init] autorelease];
#else
return nil;
#endif
}

- (UIView *) brandedView
{
return nil;
}

- (UIButton *) brandedMainButton
{
return nil;
}

- (UIToolbar *) brandedToolbar
{
return nil;
}

@end

=============================

View Code

@interface SierraBrandingFactory : BrandingFactory
{

}

- (UIView*) brandedView;
- (UIButton*) brandedMainButton;
- (UIToolbar*) brandedToolbar;
View Code

@implementation SierraBrandingFactory

- (UIView*) brandedView
{
// returns a custom view for Sierra
return [[[SierraView alloc] init] autorelease];
}

- (UIButton*) brandedMainButton
{
// returns a custom main button for Sierra
return [[[SierraMainButton alloc] init] autorelease];
}

- (UIToolbar*) brandedToolbar
{
// returns a custom toolbar for Sierra
return [[[SierraToolbar alloc] init] autorelease];
}

@end

=============================

View Code

@interface AcmeBrandingFactory : 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

=============================

用戶端:

View Code

BrandingFactory * factory = [BrandingFactory factory];

UIView * view = [factory brandedView];


UIButton * button = [factory brandedMainButton];


UIToolbar * toolbar = [factory brandedToolbar];
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.