zoukankan      html  css  js  c++  java
  • 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];



















  • 相关阅读:
    python RabbitMQ gRPC 实践经验
    python 数据库实践经验
    python GUI相关
    angularjs中的$watch、$digest、$apply
    css选择器优先级
    angularjs基本理解
    如何编写符合web标准的XHTML文档
    跨域问题
    如何养成良好的书写代码习惯
    ie常见兼容问题
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5368881.html
Copyright © 2011-2022 走看看