iOS設計モデルの抽象工場
設計モデルはプログラムの向上に必要な知識であり、iOSが抽象的な工場設計モデルをどのように実現するかについて説明します.本文はocプログラミングの道という抽象工場のこの章を見た後に書いたので、原理が分からなければその本を読むことができます.
TestView.hまずビューを作成する
TestView.m
次に2つのクラスTestFactory、TestBrandingFactoryを作成します.
TestFactoryはTestBrandingFactoryを継承します.具体的には、次のようになります.
TestBrandingFactory.h
TestBrandingFactory.m
TestFactory.h
TestFactory.m
最後に実装を貼り付ける
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];