美文网首页设计模式
1、Swift 简单工厂模式

1、Swift 简单工厂模式

作者: barry | 来源:发表于2017-07-11 10:07 被阅读22次

    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传送门

    相关文章

      网友评论

        本文标题:1、Swift 简单工厂模式

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