美文网首页
iOS 工厂模式(简单工厂)

iOS 工厂模式(简单工厂)

作者: 印林泉 | 来源:发表于2017-03-06 23:57 被阅读105次
    • 工厂模式

      • 简单工厂模式
        具体工厂,简化生产流程,隔离生产细节,产品有一些共同功能。

      • 抽象工厂模式
        工厂类是抽象的,客户端需要通过抽象工厂指定具体工厂,具体工厂生产具体产品。

    • 应用,使用场景
      工厂生产手机
      品牌工厂生产手机

    设备工厂

    //
    //  DeviceFactory.h
    //  LearnSimpleFactory
    //
    //  Created by 印林泉 on 2017/3/6.
    //  Copyright © 2017年 ylq. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "BaseDevice.h"
    #import "iPhoneDevice.h"
    #import "AndroidDevice.h"
    
    typedef enum : NSInteger {
        kiPhone = 0x11,
        kAndroid,
    } EDeviceType;
    
    @interface DeviceFactory : NSObject
    
    ///根据用户提交的指令创建出具体的手机
    + (BaseDevice<PhoneProtocol> *)deviceFactoryWithDeviceType:(EDeviceType)type;
    
    @end
    
    //
    //  DeviceFactory.m
    //  LearnSimpleFactory
    //
    //  Created by 印林泉 on 2017/3/6.
    //  Copyright © 2017年 ylq. All rights reserved.
    //
    
    #import "DeviceFactory.h"
    
    @implementation DeviceFactory
    
    + (BaseDevice<PhoneProtocol> *)deviceFactoryWithDeviceType:(EDeviceType)type {
        BaseDevice<PhoneProtocol> *device = nil;
        if (type == kiPhone) {
            device = [[iPhoneDevice alloc] init];
        }
        else if (type == kAndroid) {
            device = [[AndroidDevice alloc] init];
        }
        return device;
    }
    
    @end
    

    设备基类

    //
    //  BaseDevice.h
    //  LearnSimpleFactory
    //
    //  Created by 印林泉 on 2017/3/6.
    //  Copyright © 2017年 ylq. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "PhoneProtocol.h"
    
    @interface BaseDevice : NSObject<PhoneProtocol>
    
    @end
    
    //
    //  BaseDevice.m
    //  LearnSimpleFactory
    //
    //  Created by 印林泉 on 2017/3/6.
    //  Copyright © 2017年 ylq. All rights reserved.
    //
    
    #import "BaseDevice.h"
    
    @implementation BaseDevice
    
    - (void)phoneCall {
        
    }
    
    - (void)sendMessage {
        
    }
    
    @end
    

    手机质量控制协议

    //
    //  PhoneProtocol.h
    //  LearnSimpleFactory
    //
    //  Created by 印林泉 on 2017/3/6.
    //  Copyright © 2017年 ylq. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @protocol PhoneProtocol <NSObject>
    
    @required
    
    /**
     *  打电话
     */
    - (void)phoneCall;
    
    /**
     *  发短信
     */
    - (void)sendMessage;
    
    @end
    

    苹果手机

    //
    //  iPhoneDevice.h
    //  LearnSimpleFactory
    //
    //  Created by 印林泉 on 2017/3/6.
    //  Copyright © 2017年 ylq. All rights reserved.
    //
    
    #import "BaseDevice.h"
    
    @interface iPhoneDevice : BaseDevice
    
    /**
     *  指纹识别
     */
    - (void)fingerprintIndentification;
    
    @end
    
    //
    //  iPhoneDevice.m
    //  LearnSimpleFactory
    //
    //  Created by 印林泉 on 2017/3/6.
    //  Copyright © 2017年 ylq. All rights reserved.
    //
    
    #import "iPhoneDevice.h"
    
    @implementation iPhoneDevice
    
    - (void)phoneCall {
        NSLog(@"iPhone phoneCall");
    }
    
    - (void)sendMessage {
        NSLog(@"iPhone sendMessage");
    }
    
    - (void)fingerprintIndentification {
        NSLog(@"iPhone fingerprintIndentification");
    }
    
    @end
    

    安卓手机

    //
    //  AndroidDevice.h
    //  LearnSimpleFactory
    //
    //  Created by 印林泉 on 2017/3/6.
    //  Copyright © 2017年 ylq. All rights reserved.
    //
    
    #import "BaseDevice.h"
    
    @interface AndroidDevice : BaseDevice
    
    /**
     *  定制主题
     */
    - (void)customTheme;
    
    @end
    
    //
    //  AndroidDevice.m
    //  LearnSimpleFactory
    //
    //  Created by 印林泉 on 2017/3/6.
    //  Copyright © 2017年 ylq. All rights reserved.
    //
    
    #import "AndroidDevice.h"
    
    @implementation AndroidDevice
    
    - (void)phoneCall {
        NSLog(@"Android phoneCall");
    }
    
    - (void)sendMessage {
        NSLog(@"Android sendMessage");
    }
    
    - (void)customTheme {
        NSLog(@"Android customTheme");
    }
    
    @end
    

    使用

    //
    //  ViewController.m
    //  LearnSimpleFactory
    //
    //  Created by 印林泉 on 2017/3/6.
    //  Copyright © 2017年 ylq. All rights reserved.
    //
    
    #import "ViewController.h"
    #import "DeviceFactory.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        ///工厂中创建出具体产品
        iPhoneDevice *iPhone = (iPhoneDevice *)[DeviceFactory deviceFactoryWithDeviceType:kiPhone];
        ///使用产品的功能
        [iPhone fingerprintIndentification];
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
    

    相关文章

      网友评论

          本文标题:iOS 工厂模式(简单工厂)

          本文链接:https://www.haomeiwen.com/subject/lriygttx.html