zoukankan      html  css  js  c++  java
  • iOS设计模式之简单工厂模式

    简单工厂模式

    基本理解

    • 到底要实例化谁,将来会不会增加实例化的对象,比如计算器增加开根运算,这是很容易变化的地方,应该考虑用一个单独的类来做这个创造实例的过程,这就是工厂。
    • 通过使用工厂模式,我们可以降低耦合度,做到对扩展开放,对修改封闭。如果需要再增加其他的方法,我们只需要重新构建一个子类即可。

    例子

    这里简单介绍一下。
    比如我们要做一个计算器,我们会写几个运算类,比如加法、乘法、除法和减法。但是我们在使用这些运算类的时候,我们没有必要去在客户端每次用switch判断或者if判断。我们只需要传入运算符即可:

    Operation oper;
    oper = OperationFactory.createOperate("+");
    oper.number1 = 1;
    oper.number2 = 2;
    double result = oper.getResult();
    

    因此我们用到的OperationFactory就是一个工厂,它用来加工生成不同的运算。简单看一下OperationFactory里面都写了什么。

    -(Operation *)createOperate:(NSString *)operate
    {
        Operation oper;
        switch (operate) {
            case [operate isEqualToString:@"+"]:
                oper = [[OperationAdd alloc] init];
                break;
            case [operate isEqualToString:@"-"]:
                oper = [[OperationSub alloc] init];
                break;
            case [operate isEqualToString:@"*"]:
                oper = [[OperationMul alloc] init];
                break;
            case [operate isEqualToString:@"/"]:
                oper = [[OperationDiv alloc] init];
                break;
            default:
                break;
        }
        return oper;
    }
    

    这只是大概的代码。其中Operation是OPerationAdd、OperationSub等得父类,然后通过参数operate来生成不同的子类,然后再计算,这就是工厂模式。

  • 相关阅读:
    IE下判断IE版本的语句...[if lte IE 6]……[endif]
    “浏览器模式”和“文档模式”
    IoC框架---通俗概述
    Castle IOC容器组件生命周期管理
    Castle学习笔记----初探IOC容器
    Castle IOC容器内幕故事(下)
    Castle IOC容器内幕故事(上)
    Castle IOC容器构建配置详解(二)
    javascript属性一览
    javascript addEventListener方法
  • 原文地址:https://www.cnblogs.com/zhanggui/p/4714572.html
Copyright © 2011-2022 走看看