设计模式

1、Swift 简单工厂模式

2017-07-11  本文已影响22人  barry

UML图示:

简单工厂模式.png

加(CaculateAdd)、减(CaculateMinus)、乘(CaculateMultiply)、除类全部遵守CaculateDelegate协议,实现计算方法


CaculateDelegate 协议类

//简单加、减、乘、除代理
protocol CaculateDelegate {
    var numberA: Float {
        get set
    }
    
    var numberB: Float {
        get set
    }
    
    func caculate() -> Float
}

加、减、乘、除类

class CaculateAdd: NSObject, CaculateDelegate {

    var numberA: Float = 0.0
    
    var numberB: Float = 0.0
    
    func caculate() -> Float {
        return numberA + numberB
    }
}

工厂类

//工厂类,统一返回对象,如果要添加新的对象,新建类,并添加至case中
class Factory: NSObject {

    class func createOperator(operatorParameter: String) -> AnyObject{
        
        let operators = ["+", "-", "*", "/"];
        
        let type: CaculateType = CaculateType(rawValue: operators.index(of: operatorParameter) ?? 0) ?? CaculateType.Add

        switch type {
        case .Add:
            return CaculateAdd()
        case .Minus:
            return CaculateMinus()
        case .Multiply:
            return CaculateMultiply()
        case .Divide:
            return CaculateDivide()
        }
    }
}



优缺点

对于计算器这样的简单的设计,如果不借助工厂模式, 那么就要我们自己对不同的运算做相应的处理。这样一是不易维护,二是不是扩展。当然,工厂模式只是应对一些简单的场景。工厂模式囊括了所有的情况,如果要增加其它的情况,就需要修改工厂类。

Github传送门

上一篇 下一篇

猜你喜欢

热点阅读