码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 设计模式之抽象工厂

时间:2014-11-10 23:21:02      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:设计模式   抽象   工厂   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];



















iOS 设计模式之抽象工厂

标签:设计模式   抽象   工厂   ios   

原文地址:http://blog.csdn.net/qqmcy/article/details/40990243

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!