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

    分析

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

    关系伦理图

  • 相关阅读:
    Sql批处理语句
    使用waitfor 语句
    将文件分对话拆分
    集合
    用户登录系统
    fromkeys() keys() values() items()
    通讯录程序
    字符串分割方法split()函数
    装逼的本质就是把同一东西说成不同的事物
    字典
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4690397.html
Copyright © 2011-2022 走看看