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

次に2つのクラス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];