zoukankan      html  css  js  c++  java
  • iOS设计模式

    iOS设计模式 - 简单工厂

    原理图

    说明

    1. 工厂类以及其实例化出来的子类都不是抽象类,所以称之为简单工厂(制造者与产品都是具体的实现类)

    2. 简单工厂灵活性较差,但其简单直白的特性,适用于层级结构简单的场景

    源码

    https://github.com/YouXianMing/iOS-Design-Patterns

    //
    //  DeviceCreator.h
    //  FactoryPattern
    //
    //  Created by YouXianMing on 15/7/29.
    //  Copyright (c) 2015年 YouXianMing. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "DeviceProtocol.h"
    #import "iPhoneDevice.h"
    #import "AndroidDevice.h"
    #import "WindowsDevice.h"
    
    typedef enum : NSUInteger {
        
        kAndroid,
        kiPhone,
        kWindows,
        
    } DeviceType;
    
    @interface DeviceCreator : NSObject
    
    /**
     *  根据标签创建手机
     *
     *  @param deviceType 手机标签
     *
     *  @return 对应的手机
     */
    + (BaseDevice *)deviceCreatorWithDeviceType:(DeviceType)deviceType;
    
    @end
    //
    //  DeviceCreator.m
    //  FactoryPattern
    //
    //  Created by YouXianMing on 15/7/29.
    //  Copyright (c) 2015年 YouXianMing. All rights reserved.
    //
    
    #import "DeviceCreator.h"
    #import "BaseDevice.h"
    
    @implementation DeviceCreator
    
    + (BaseDevice *)deviceCreatorWithDeviceType:(DeviceType)deviceType {
    
        if (deviceType == kiPhone) {
            
            return [iPhoneDevice new];
            
        } else if (deviceType == kAndroid) {
        
            return [AndroidDevice new];
            
        } else if (deviceType == kWindows) {
        
            return [WindowsDevice new];
            
        } else {
        
            return [BaseDevice new];
        }
    }
    
    @end
    //
    //  BaseDevice.h
    //  FactoryPattern
    //
    //  Created by YouXianMing on 15/7/29.
    //  Copyright (c) 2015年 YouXianMing. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "DeviceProtocol.h"
    
    @interface BaseDevice : NSObject <DeviceProtocol>
    
    @end
    //
    //  BaseDevice.m
    //  FactoryPattern
    //
    //  Created by YouXianMing on 15/7/29.
    //  Copyright (c) 2015年 YouXianMing. All rights reserved.
    //
    
    #import "BaseDevice.h"
    
    @implementation BaseDevice
    
    - (void)phoneCall {
    
        NSLog(@"... BaseDevice ...");
    }
    
    - (NSString *)systemInfomation {
    
        return @"BaseDevice";
    }
    
    @end

    分析

    具体的制造者与具体的子类

    关系伦理图

  • 相关阅读:
    给UILabel设置不同的字体和颜色
    通过btn获取所在cell
    常用网站
    如何设计一个 iOS 控件?(iOS 控件完全解析) (转)
    #Mac技巧#如何在Mac系统上新建TXT文档,以及打开txt文稿的乱码问题如何解决
    整理 iOS 9 适配中出现的坑(图文)(转)
    UISegmentedControl
    Xcode因为证书问题经常报的那些错
    iOS开发--UIDatePicker
    IOS开发中有用的第三方库
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4690397.html
Copyright © 2011-2022 走看看