iOS 設計模式之抽象工廠,ios設計模式工廠
設計模式是程式提升的必備知識,這裡說下iOS如何?抽象工廠設計模式。本文是看過oc編程之道這本的抽象工廠這章後寫出的,如果不明白原理可以看看那本書。
TestView.h首先建立一個視圖
//// TestView.h// AbstractFactory//// Created by 杜甲 on 11/10/14.// Copyright (c) 2014 杜甲. All rights reserved.//#import <UIKit/UIKit.h>@interface TestView : UIView@end
TestView.m
//// TestView.m// AbstractFactory//// Created by 杜甲 on 11/10/14.// Copyright (c) 2014 杜甲. All rights reserved.//#import "TestView.h"@implementation TestView- (id)initWithFrame:(CGRect)frame{ if (self = [super initWithFrame:frame]) { self.backgroundColor = [UIColor redColor]; } return self;}@end
接下來建立兩個類TestFactory、TestBrandingFactory 其中TestFactory繼承TestBrandingFactory。具體實現如下:
TestBrandingFactory.h
//// TestBrandingFactory.h// AbstractFactory//// Created by 杜甲 on 11/10/14.// Copyright (c) 2014 杜甲. All rights reserved.//#import <Foundation/Foundation.h>#import <UIKit/UIKit.h>@interface TestBrandingFactory : NSObject+ (TestBrandingFactory *)factory;- (UIView *)createTestView:(CGRect)frame;@end
TestBrandingFactory.m
//// TestBrandingFactory.m// AbstractFactory//// Created by 杜甲 on 11/10/14.// Copyright (c) 2014 杜甲. All rights reserved.//#import "TestBrandingFactory.h"#import "TestFactory.h"@implementation TestBrandingFactory+ (TestBrandingFactory *) factory{ return [[TestFactory alloc] init];}- (UIView *) createTestView:(CGRect)frame{ return nil;}@end
TestFactory.h
//// TestFactory.h// AbstractFactory//// Created by 杜甲 on 11/10/14.// Copyright (c) 2014 杜甲. All rights reserved.//#import "TestBrandingFactory.h"@interface TestFactory : TestBrandingFactory@end
TestFactory.m
//// TestFactory.m// AbstractFactory//// Created by 杜甲 on 11/10/14.// Copyright (c) 2014 杜甲. All rights reserved.//#import "TestFactory.h"#import "TestView.h"@implementation TestFactory- (UIView *)createTestView:(CGRect)frame{ return [[TestView alloc] initWithFrame:frame];}@end
最後貼出實現
TestBrandingFactory * tmp = [TestBrandingFactory factory]; UIView *v = [tmp createTestView:CGRectMake(50, 110, 100, 50)]; [self.view addSubview:v];