• groovy动态类型--能力式设计


    动态类型

      动态类型中的类型是在运行时推断的,方法及其参数也是在运行时检查的。

    能力式设计

      被称作鸭子模式:他有这么一个观点:如果它走路像鸭子,叫起来也像鸭子,那么他就是一只鸭子。

    契约式设计

      相当于Java中定义的接口,他与能力式设计相对。

    使用动态类型语言要自律

      单元测试等等手段

    **
     * Created by Jxy on 2019/1/4 10:09
     * groovy动态类型
     * 没有实现任何接口,也没有扩展任何公共类
     * 这里是能力式设计
     * 能力式设计与契约式设计相对应
     *
     * 使用动态类型语言编程,而却没有使用单元测试的自律,感觉就像是在玩火。
     */
    def takeHelp(helper){
        helper.helpMoveThings()
        if(helper.metaClass.respondsTo(helper,"eatFood")){
            //helper.eatFood()
        }
    }
    
    class Man{
        void helpMoveThings(){
            println "man is helper"
        }
    }
    
    class Woman{
        void helpMoveThings(){
            println "woman is helper"
        }
    }
    
    class Elephant{
        void helpMoveThings(){
            println "elephant is helper"
        }
    }
    
    takeHelp(new Man())
    takeHelp(new Woman())
    takeHelp(new Elephant())

    运行结果:

    man is helper
    woman is helper
    elephant is helper
    
    Process finished with exit code 0
  • 相关阅读:
    网址
    asp.net 各种路径查找
    jquery.nicescroll.js 滚动条插件 API
    课程表上一周下一周
    上一周下一周
    使用NPOI导入导出标准Excel
    FTP文件操作 上传文、 下载文件、删除文件 、创建目录
    asp.net断点续传
    11.06第九次作业
    11.20dezuoye
  • 原文地址:https://www.cnblogs.com/jsersudo/p/10218786.html
Copyright © 2020-2023  润新知