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



















  • 相关阅读:
    Spark官方文档——本地编写并运行scala程序
    scala函数组合器
    scala数组
    scala实现kmeans算法
    Nginx 服务器安装及配置文件详解
    OpenVAS开源风险评估系统部署方案
    Elasticsearch和Head插件安装
    手把手教你在CentOS 7.4下搭建Zabbix监控(转)
    elasticsearch6.X 及head插件部署(完整版)
    Vim配置(python版)
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5368881.html
Copyright © 2011-2022 走看看