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
  • 相关阅读:
    CRM SFA Determine the Type of Claim Rule Template to Use
    Log4j 打印堆栈信息
    树查找 二分法
    CRM 公海 领取规则 策略
    【设计模式】策略模式与状态模式
    Alibaba crm
    CRM easy rule & Resource Duplicate Detection
    CRM 线索分配
    SAAS CRM SFA 线索 分配
    SOFA & COLA 企业应用框架 & 代码精进
  • 原文地址:https://www.cnblogs.com/jsersudo/p/10218786.html
Copyright © 2011-2022 走看看