在像Java这样的语言中,您可以使用访问者模式模拟模式匹配行为.

您可以通过以下步骤执行此操作:

>使用accept方法定义一个表示Animal的接口

>向Animal添加一些子类,并提供相同的实现,如下面的小例子中所示.

>定义接口Visitor并为其提供实现.这个classe将允许您模拟类上的一些模式匹配.

这里有一个小例子:

public interface Animal {

public void accept(AnimalVisitor v);

}

public class Dog extends Animal {

public void accept(AnimalVisitor v) {

v.visit(this);

}

}

public class Cat extends Animal {

public void accdept(AnimalVistior v) {

v.visit(this);

}

}

public interface AnimalVisitor {

public void visit(Dog d);

public void visit(Cat c);

}

public class PrintAnimal implements AnimalVisitor {

public void visit(Dog d) {

System.out.println("Dog");

}

public void visit(Cat c) {

System.out.println("Cat");

}

}

访问者模式是解决问题的一种优雅方式,也可以避免在一个函数中积累if(x实例的bar).使用此模式,您的代码将更易读,更容易扩展.

相应的Scala代码可以让我了解我的答案:

abstract class Animal {}

case class Dog() extends Animal

case class Cat() extends Animal

object Animal {

def printAnimal(a : Animal) = a match {

case x : Dog => "Dog"

case x : Cat => "Cat"

case _ => "Unknown"

}

def main(args : Array[String]) = {

println(printAnimal(Dog()))

}

}

java 行为模式_java – 模式匹配行为相关推荐

  1. java模板方法模式_Java中的模板方法模式

    java模板方法模式 模板方法模式是一种行为模式,建议在超类中更一般地定义算法. 该算法是在称为模板方法的方法中定义的. 子类仅定义更具体的算法步骤的实现. 使用这种设计模式的好处是,算法后面的任何更 ...

  2. java命令模式_Java中的命令设计模式

    java命令模式 在本教程中,我们将学习命令模式,这是一种重要的行为设计模式. 它具有一些重要的应用程序,例如在文本编辑器中实现撤消/重做功能. 在命令设计模式中,有一个命令对象位于发送方和接收方对象 ...

  3. java代理模式_Java代理

    java代理模式 本文是我们名为" 高级Java "的学院课程的一部分. 本课程旨在帮助您最有效地使用Java. 它讨论了高级主题,包括对象创建,并发,序列化,反射等. 它将指导您 ...

  4. java 模板模式_Java模板模式(Template模式)

    Java模板模式(Template模式) 下一节> Template模式定义:定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中. 其实Java的抽象类本来就是Template模式,因此使 ...

  5. java 设置模式_Java设计模式百例 - 调停者模式

    调停者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性的.这种模式提供了一个调停者类,用来充当"中心化"或"总线化"的角色,与各个 ...

  6. java策略模式_Java设计模式之策略模式详解

    本文实例为大家分享了Java策略模式,供大家参考,具体内容如下 1.策略模式(Strategy Pattern)是一种比较简单的模式,也叫做政策模式(PolicyPattern). 定义如下: Def ...

  7. java原始模型模式_java设计模式--原始模型模式

    简介 原始模型模式属于对象的创建模式.通过一个原型对象来指明要创建对象的类型,然后用复制原型对象的方法来创建出更多同类型的对象. Java所有的类都是从java.lang.Object类继承来的,Ob ...

  8. java单态模式_Java单态模式

    Java的单态模式 Singletom 作用:保证在Java应用程序中,一个Java类只有一个实例存在:所以一般单态类会提供一个返回该类实例的方法.提供一个对对象的全局访问指针. 优点:节省内存,限制 ...

  9. java改写模式_Java基于状态模式实现的文档编辑模式切换功能实例

    本文实例讲述了Java基于状态模式实现的文档编辑模式切换功能.分享给大家供大家参考,具体如下: 一 模式定义 状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来就像是改变了其类. 二 ...

最新文章

  1. 如何写出优质干净的代码,这6个技巧你不能错过!
  2. 短书评 | 这本Python新书风评很好
  3. acquisition calculation
  4. 手机打开python文件_使用python在计算机和手机之间通过wifi进行简单的文件传输...
  5. BZOJ4415: [Shoi2013]发牌
  6. 深入理解JVM虚拟机-Ubuntu中安装openJDK
  7. json爬虫获取列表数据不全,已解决
  8. MarteEngine tutorial:Basic collision
  9. 用脆弱性评估流程击败黑客
  10. WPF 第三方控件学习使用——可停靠布局控件(AvalonDock)
  11. java 定时调用api_java定时任务接口ScheduledExecutorService
  12. 橡胶软接头加防拉脱限位装置
  13. 【语音识别】食物声音识别(三)音频数据特征提取
  14. 中小企业建站方案和资源
  15. 名帖157 王徽之 行楷《新月帖》
  16. ValueError:too many values to unpacked(expect2)
  17. 移动通信各制式、调制的速率及频谱利用率(2G-4G)
  18. StarSpace系列之一:tagspace
  19. 白帽子学习——Metasploit渗透测试指南
  20. C语言 神奇的式子:n=n(n-1) 涵义,作用及其应用场景

热门文章

  1. C#给串口设备发送脉冲指令。DTR和RTS指令
  2. python第一章思维导图_阅读课本第一章内容后,使用思维导图画出你所理解的
  3. ipython换行操作_ipython 换行
  4. 浅析基于双目视觉的自动驾驶技术
  5. 端到端基于图像的伪激光雷达3D目标检测
  6. 激光雷达的地面-非地面分割和pcl_ros实践
  7. Adam又要“退休”了?耶鲁大学团队提出AdaBelief,却引来网友质疑
  8. 自适应采样非局部神经网络的点云鲁棒操作
  9. pyhton 中的字符串切片问题
  10. windows共享linux的某一文件夹