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



















  • 相关阅读:
    〖編程·C++〗回溯算法:排列树 N皇后问题
    〖網頁·PHP〗Windows 7下进行PHP环境搭建
    〖編程·C++〗回溯算法:排列树 工作分配问题
    〖編程·C++〗回溯算法:完全N叉树 最佳调度问题 以及相关思考
    pod install 初始化失败 RuntimeError [Xcodeproj] Unknown object version.
    iOS 版本判定
    Windows部署多版本Mysql服务
    注意IE的Cookie个数限制问题
    检索 COM 类工厂中的组件时失败,原因是出现以下错误: 8007007e
    一次曲折的单点集成之旅
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5368881.html
Copyright © 2011-2022 走看看