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
  • 相关阅读:
    20170706xlVBA根据工资汇总表生成个人工资条
    20170706xlVBA汇总历时对阵数据
    20170706xlVBA批量提取word表格中的自我评分
    python学习笔记(一)
    哈希表
    前缀表达式、中缀表达式、后缀表达式

    环形链表
    队列
    稀疏数组
  • 原文地址:https://www.cnblogs.com/jsersudo/p/10218786.html
Copyright © 2011-2022 走看看