java 行为模式_java – 模式匹配行为
在像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 – 模式匹配行为相关推荐
- java模板方法模式_Java中的模板方法模式
java模板方法模式 模板方法模式是一种行为模式,建议在超类中更一般地定义算法. 该算法是在称为模板方法的方法中定义的. 子类仅定义更具体的算法步骤的实现. 使用这种设计模式的好处是,算法后面的任何更 ...
- java命令模式_Java中的命令设计模式
java命令模式 在本教程中,我们将学习命令模式,这是一种重要的行为设计模式. 它具有一些重要的应用程序,例如在文本编辑器中实现撤消/重做功能. 在命令设计模式中,有一个命令对象位于发送方和接收方对象 ...
- java代理模式_Java代理
java代理模式 本文是我们名为" 高级Java "的学院课程的一部分. 本课程旨在帮助您最有效地使用Java. 它讨论了高级主题,包括对象创建,并发,序列化,反射等. 它将指导您 ...
- java 模板模式_Java模板模式(Template模式)
Java模板模式(Template模式) 下一节> Template模式定义:定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中. 其实Java的抽象类本来就是Template模式,因此使 ...
- java 设置模式_Java设计模式百例 - 调停者模式
调停者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性的.这种模式提供了一个调停者类,用来充当"中心化"或"总线化"的角色,与各个 ...
- java策略模式_Java设计模式之策略模式详解
本文实例为大家分享了Java策略模式,供大家参考,具体内容如下 1.策略模式(Strategy Pattern)是一种比较简单的模式,也叫做政策模式(PolicyPattern). 定义如下: Def ...
- java原始模型模式_java设计模式--原始模型模式
简介 原始模型模式属于对象的创建模式.通过一个原型对象来指明要创建对象的类型,然后用复制原型对象的方法来创建出更多同类型的对象. Java所有的类都是从java.lang.Object类继承来的,Ob ...
- java单态模式_Java单态模式
Java的单态模式 Singletom 作用:保证在Java应用程序中,一个Java类只有一个实例存在:所以一般单态类会提供一个返回该类实例的方法.提供一个对对象的全局访问指针. 优点:节省内存,限制 ...
- java改写模式_Java基于状态模式实现的文档编辑模式切换功能实例
本文实例讲述了Java基于状态模式实现的文档编辑模式切换功能.分享给大家供大家参考,具体如下: 一 模式定义 状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来就像是改变了其类. 二 ...
最新文章
- 如何写出优质干净的代码,这6个技巧你不能错过!
- 短书评 | 这本Python新书风评很好
- acquisition calculation
- 手机打开python文件_使用python在计算机和手机之间通过wifi进行简单的文件传输...
- BZOJ4415: [Shoi2013]发牌
- 深入理解JVM虚拟机-Ubuntu中安装openJDK
- json爬虫获取列表数据不全,已解决
- MarteEngine tutorial:Basic collision
- 用脆弱性评估流程击败黑客
- WPF 第三方控件学习使用——可停靠布局控件(AvalonDock)
- java 定时调用api_java定时任务接口ScheduledExecutorService
- 橡胶软接头加防拉脱限位装置
- 【语音识别】食物声音识别(三)音频数据特征提取
- 中小企业建站方案和资源
- 名帖157 王徽之 行楷《新月帖》
- ValueError:too many values to unpacked(expect2)
- 移动通信各制式、调制的速率及频谱利用率(2G-4G)
- StarSpace系列之一:tagspace
- 白帽子学习——Metasploit渗透测试指南
- C语言 神奇的式子:n=n(n-1) 涵义,作用及其应用场景