访问者模式的java语言_Java 设计模式 之 访问者模式
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 设计模式 之 访问者模式相关推荐
- 访问者模式的java语言_Java 设计模式系列(二三)访问者模式(Vistor)
Java 设计模式系列(二三)访问者模式(Vistor) 访问者模式是对象的行为模式.访问者模式的目的是封装一些施加于某种数据结构元素之上的操作.一旦这些操作需要修改的话,接受这个操作的数据结构则可以 ...
- 装饰模式java咖啡_Java设计模式——装饰者模式
概述: 本章可以称为"给爱用继承的人一个全新的设计眼界".我们即将再度探讨典型滥用问题.你将在本章学到如何使用对象组合的方式,做到在运行时装饰类.为什么呢?一旦你熟悉了装饰者的技巧 ...
- java与模式pdf 闫宏_Java设计模式及实践.pdf下载
Java设计模式及实践.pdf下载 资料简介:本书向读者展示Java语言中更加智能化的编码实例.书中首先介绍面向对象编程(OOP)和函数式编程(FP)范式,然后描述常用设计模式的经典使用方法,并解释如 ...
- java web简单工厂模式_JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...
- java 设计模式 路由器_java设计模式2————工厂模式
java设计模式2----工厂模式 1.工厂模式介绍: 1.1.实现了创建者与调用者的分离 1.2.详细分类: 简单工厂模式 工厂方法模式 抽象工厂模式 1.3.所遵循的OOP原则: 开闭原则:对扩展 ...
- java责任链模式审批请假_Java设计模式-责任链模式
Java设计模式-责任链模式 Java版本:jdk1.8 IDE:IDEA 一 前言 本文介绍责任链模式以及Java下的实现. 二 概念 1.什么是责任链模式 责任链模式(Chain of Respo ...
- java 状态模式 同步_JAVA设计模式之状态模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述状态(State)模式的: 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为 ...
- Java创新型模式_java设计模式--创建型模式(一)
2016-04-24 10:10:34 创建型模式:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式 注意:工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂 ...
- java 工厂模式详解_Java设计模式之工厂模式详解
简单工厂其实并不是设计模式,只是一种编程习惯. 首先我们创建父类Cup,所有杯子类的父类.再创建它的子类BigCup和SmallCup类. public abstract class Cup { pu ...
最新文章
- Waymo自动驾驶详解
- freertos心跳中断_FreeRTOS 在STM32上的移植 V1.0
- Matrix calculus
- python:dataframe保存成csv文件和读取
- linux网络相关配置
- 计算机二级vf笔试,计算机二级(VF)笔试120.doc
- 解决阿里云postfix无法发送邮件问题
- 工行居逸贷,信贷员说3年利率11.38%!!!
- cordova 一个将web应用程序封装成app的框架
- Properties 持久的属性集
- 中职读计算机什么专业好,读职校选择什么专业好一些
- 构建C1000K的服务器(1) – 基础
- html进阶css(5)
- linux编写脚本的基本方法
- 大米云主机首批优秀体验师新鲜出炉——软件服务篇
- Apache详解(五)WEB相关工具
- 互联网应用基础第五课:互联网即时通讯工具之QQ和微信的使用、淘宝客理解
- 客户机是计算机网络硬件吗,计算机网络中硬件连接设备有哪些?
- 银行的总行,营业部,支行,分理处有什么样的关系
- react的ref三种使用方式,获取元素内容
热门文章
- 自然语言处理(NLP)之用深度学习实现命名实体识别(NER)
- 情感分析的描述、基于词袋模型和word2vec模型的情感分析实现
- 信道划分介质访问控制
- 传统方法的点云分割以及PCL中分割模块
- 使用OpenCV自动去除背景色
- 实战:OpenVINO+OpenCV 文本检测与识别
- CPU状态信息us,sy,ni,id,wa,hi,si,st含义
- Angular:Promise.all()的具体应用
- Linux编程_Shell脚本练习题
- zabbix 小纪录