zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    英语中的一个月几天的表示法
    深圳梧桐山游记
    linux中创建文件和文件夹
    linux中~和/的区别
    linux中的--和-的区别
    linux中vi和vim的区别
    基本数据类型大小和范围
    洛谷 [AHOI2001]质数和分解
    codevs 1115 开心的金明--01背包
    codevs 1080 线段树练习--用树状数组做的
  • 原文地址:https://www.cnblogs.com/jsersudo/p/10218786.html
Copyright © 2011-2022 走看看