0
点赞
收藏
分享

微信扫一扫

[AHK]用AutoHotkey面向对象实践“简单工厂模式”

用面向对象编程实现一个计算器程序,要求输入两个数和运算符号,得到结果。

#SingleInstance, Force
/**
 * 运算类
 * @author sunwind
 *
 */
class Operation {
    _numberA
    {
        get{
            return this._numberA
        }
    }
    _numberB
    {
         get{
            return this._numberB
        }
  
    }
}
/**
 * 加减乘除类 -- 加法类,继承运算类
 * @author sunwind
 *
 */
class OperationAdd extends Operation {   
   
    result[]
    {
        get{
            return base._numberA + base._numberB
        }
    } 
}
/**
 * 加减乘除类 -- 减法类,继承运算类
 * @author sunwind
 *
 */
class OperationSub extends Operation {
    result[]
    {
        get{
            return base._numberA - base._numberB
        }
    } 

}
/**
 * 加减乘除类 -- 乘法类,继承运算类
 * @author sunwind
 *
 */
class OperationMul extends Operation {   
    result[]
    {
        get{
            return base._numberA * base._numberB
        }
    } 
}
/**
 * 加减乘除类 -- 除法类,继承运算类
 * @author sunwind
 *
 */
class OperationDiv extends Operation {   
   
    result[]
    {
        get{
            return base._numberA / base._numberB
        }
    } 
}
;增加一个新运算,需要增加一个Operation的子类 比如,增加“指数运算”  就幢一个 OperationExp 类 继承 Operation
;并需要在简单运算工厂类中增加相应运算符即可。
class OperationExp extends Operation{
    
    result[]
    {
        get{
            return base._numberA ** base._numberB
        }
    } 
}

/**
 * 简单运算工厂类
 * @author sunwind
 * 
 */
class OperationFacotry {
    createOperate(operate){      
        oper :="" 
        switch (operate)
        {
            case "+":
                oper := new OperationAdd()
            case "-":
                oper := new OperationSub()
            case "*":
                oper := new OperationMul()
            case "/":
                oper := new OperationDiv()
            case "^":
                oper := new OperationExp()
        }
        return oper
    }   
}
/**
 * 客户端代码
 * @author sunwind
 *
 */
class Test{
    main() {
        oper:= ""
        oper := OperationFacotry.createOperate("^")
        oper._numberA:=2
        oper._numberB:=3
        result := oper.result
        MsgBox % "结果是:"  result
    }
}


Test.main()

参考:《大话设计模式》之简单工厂模式(Java版)_J1012的博客-CSDN博客_大话设计模式java版 

举报

相关推荐

0 条评论