package com.visit.theory;

import java.util.ArrayList;

public class Test

{

public static void main(String[] args)

{

ObjectStructure o = new ObjectStructure(); //依赖于ObjectStructure

//实例化具体元素

o.attach(new Man());

o.attach(new Woman());

//当成功时不同元素的不同反映

Visitor success = new Success(); //依赖于抽象的Visitor接口

o.display(success);

//当恋爱时的不同反映

Visitor amativeness = new Love(); //依赖于抽象的Visitor接口

o.display(amativeness);

}

}

package com.visit.theory;

public interface Visitor

{

public void visit(Man man);

public void visit(Woman w);

}

package com.visit.theory;

public interface Person

{

void accept(Visitor visitor);

}

package com.visit.theory;

public class Woman implements Person {

// 先对visitor进行类型转换,再执行visit方法,因为Visitor接口已经没有声明任何抽象方法了

public void accept(Visitor visitor) {

visitor.visit(this);

}

}

package com.visit.theory;

public class Man implements Person {

// 先对visitor进行类型转换,再执行visit方法,因为Visitor接口已经没有声明任何抽象方法了

public void accept(Visitor visitor) {

visitor.visit(this);

}

}

package com.visit.theory;

public class Success implements Visitor{

public void visit(Man man) {

System.out.println("当男人成功时,背后多半有一个伟大的女人");

}

public void visit(Woman girl) {

System.out.println("当女人成功时,背后大多有一个不成功的男人");

}

}

package com.visit.theory;

public class Love implements Visitor{

public void visit(Man man) {

System.out.println("当男人恋爱时,凡事不懂也装懂");

}

public void visit(Woman girl) {

System.out.println("当女人恋爱时,遇事懂也装不懂");

}

}

package com.visit.theory;

import java.util.ArrayList;

import java.util.List;

public class ObjectStructure

{

private List elements = new ArrayList();

public void attach(Person element){

elements.add(element);

}

public void detach(Person element){

elements.remove(elements);

}

//遍历各种具体元素并执行他们的accept方法

public void display(Visitor visitor){

for(Person p:elements){

p.accept(visitor);

}

}

}

访问者模式的java语言_Java 设计模式 之 访问者模式相关推荐

  1. 访问者模式的java语言_Java 设计模式系列(二三)访问者模式(Vistor)

    Java 设计模式系列(二三)访问者模式(Vistor) 访问者模式是对象的行为模式.访问者模式的目的是封装一些施加于某种数据结构元素之上的操作.一旦这些操作需要修改的话,接受这个操作的数据结构则可以 ...

  2. 装饰模式java咖啡_Java设计模式——装饰者模式

    概述: 本章可以称为"给爱用继承的人一个全新的设计眼界".我们即将再度探讨典型滥用问题.你将在本章学到如何使用对象组合的方式,做到在运行时装饰类.为什么呢?一旦你熟悉了装饰者的技巧 ...

  3. java与模式pdf 闫宏_Java设计模式及实践.pdf下载

    Java设计模式及实践.pdf下载 资料简介:本书向读者展示Java语言中更加智能化的编码实例.书中首先介绍面向对象编程(OOP)和函数式编程(FP)范式,然后描述常用设计模式的经典使用方法,并解释如 ...

  4. java web简单工厂模式_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

    在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...

  5. java 设计模式 路由器_java设计模式2————工厂模式

    java设计模式2----工厂模式 1.工厂模式介绍: 1.1.实现了创建者与调用者的分离 1.2.详细分类: 简单工厂模式 工厂方法模式 抽象工厂模式 1.3.所遵循的OOP原则: 开闭原则:对扩展 ...

  6. java责任链模式审批请假_Java设计模式-责任链模式

    Java设计模式-责任链模式 Java版本:jdk1.8 IDE:IDEA 一 前言 本文介绍责任链模式以及Java下的实现. 二 概念 1.什么是责任链模式 责任链模式(Chain of Respo ...

  7. java 状态模式 同步_JAVA设计模式之状态模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述状态(State)模式的: 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为 ...

  8. Java创新型模式_java设计模式--创建型模式(一)

    2016-04-24 10:10:34 创建型模式:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式 注意:工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂 ...

  9. java 工厂模式详解_Java设计模式之工厂模式详解

    简单工厂其实并不是设计模式,只是一种编程习惯. 首先我们创建父类Cup,所有杯子类的父类.再创建它的子类BigCup和SmallCup类. public abstract class Cup { pu ...

最新文章

  1. Waymo自动驾驶详解
  2. freertos心跳中断_FreeRTOS 在STM32上的移植 V1.0
  3. Matrix calculus
  4. python:dataframe保存成csv文件和读取
  5. linux网络相关配置
  6. 计算机二级vf笔试,计算机二级(VF)笔试120.doc
  7. 解决阿里云postfix无法发送邮件问题
  8. 工行居逸贷,信贷员说3年利率11.38%!!!
  9. cordova 一个将web应用程序封装成app的框架
  10. Properties 持久的属性集
  11. 中职读计算机什么专业好,读职校选择什么专业好一些
  12. 构建C1000K的服务器(1) – 基础
  13. html进阶css(5)
  14. linux编写脚本的基本方法
  15. 大米云主机首批优秀体验师新鲜出炉——软件服务篇
  16. Apache详解(五)WEB相关工具
  17. 互联网应用基础第五课:互联网即时通讯工具之QQ和微信的使用、淘宝客理解
  18. 客户机是计算机网络硬件吗,计算机网络中硬件连接设备有哪些?
  19. 银行的总行,营业部,支行,分理处有什么样的关系
  20. react的ref三种使用方式,获取元素内容

热门文章

  1. 自然语言处理(NLP)之用深度学习实现命名实体识别(NER)
  2. 情感分析的描述、基于词袋模型和word2vec模型的情感分析实现
  3. 信道划分介质访问控制
  4. 传统方法的点云分割以及PCL中分割模块
  5. 使用OpenCV自动去除背景色
  6. 实战:OpenVINO+OpenCV 文本检测与识别
  7. CPU状态信息us,sy,ni,id,wa,hi,si,st含义
  8. Angular:Promise.all()的具体应用
  9. Linux编程_Shell脚本练习题
  10. zabbix 小纪录