访问者模式

Visitor(访问者模式)

类型:行为模式

目的:表示一个作用于某个对象结构中的各元素的操作

            在不改变各元素的类的前提下定义作用于这些元素的新操作

抽象访问者(Visitor):声明多个访问操作,形成所有具体元素必须实现的接口

具体访问(ConcreteVIsitor):实现首次昂访问角色所声明的接口

抽象节点(Element):声明一个接受操作,接受访问者作为参量

 

public abstract class Child {
public abstract void Accept(Visitor visitor);
}
Usachild类
public class USAchild extends Child{
	public void Accept(Visitor visitor) {
		visitor.visitUSA(this);	}}
Chinachild类
public class Chinachild extends Child{
	public void Accept(Visitor visitor) {
		visitor.visitChina(this);	}}
Vistor类
public abstract class Visitor {
public abstract void visitChina(Chinachild c);
public abstract void visitUSA(USAchild u);}
Weightvistor类
public class WeightVisitor extends Visitor{
	public void visitChina(Chinachild c) {
		System.out.println("中国孩子体重标准是60kg");	}
	public void visitUSA(USAchild u) {
		System.out.println("美国孩子体重标准是70kg");	}}
Heightvistor类
public class HeightVisitor extends Visitor{
	public void visitChina(Chinachild c) {
		System.out.println("中国孩子身高标准是175cm");	}
	public void visitUSA(USAchild u) {	
		System.out.println("美国孩子身高标准是180cm");	}}
ObjectStructure类
public class ObjectStructure {
private ArrayList<Child> list=new ArrayList<Child>();
public void add(Child c){
	list.add(c);}
public void remove(Child c){
	list.remove(c);}
public void accept(Visitor v){
	for(Child c:list){
		c.Accept(v);	}}}
主类
public class Client {
	public static void main(String[] args) {
		ObjectStructure o=new ObjectStructure();
		o.add(new Chinachild());
		o.add(new USAchild());
		HeightVisitor h=new HeightVisitor();
		WeightVisitor w=new WeightVisitor();
		o.accept(h);
		o.accept(w);			}}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值