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来生成不同的子类,然后再计算,这就是工厂模式。

原文地址:https://www.cnblogs.com/zhanggui/p/4714572.html