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];



















郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。