jflove.cn 2016-03-22 03:20 采纳率: 0%
浏览 1419
已结题

请问各位,我这样理解访问者模式正确吗,一个简单的例子

package test;
public class Client{
//数据对象二 顾客
public static void main(String[] args) {
//当顾客进饭店吃饭,他不会直接跟厨师打交道,
//1.饭店主要是炒菜,这时,厨师会炒很多菜 但是不知道炒哪个菜, 厨房与顾客 不具备炒菜的功能,
//所以炒菜可以是厨师的功能,但是需要一个中间人来告诉厨师炒什么菜,那么我们就定义一个菜单,相当于访问者,访问厨师炒菜功能
//菜单列出了厨师会炒的菜,顾客与厨师接触不到 厨师不知道炒什么,那么就由菜单告诉厨师,
//2.这里分析出来 厨师与顾客根本没有任何关系,两者互不影响,
//3.整套流程就是 顾客告诉菜单需要吃什么菜 菜单告诉厨师炒什么菜,
//4.这个菜单本身是不存在的,为了能让两个不相关的人关联到一起,但是又不能相互影响 所以产生菜单(访问者 访问的是厨师)
CD cd= new CDclass();
System. out.println("1.告诉菜单我要吃豆鼓炒干辣椒" );
cd.DG();
}
}
//数据对象一 厨房
abstract class CF{
//这里简单定义厨房只有厨师,厨师只能炒菜,可以扩展厨房有配菜烧火之类的功能等
public abstract void CS(String cai);//厨师
public abstract void CC(CF cf,String cai); //拿着穿菜单通知厨师炒菜
}
class CFclass extends CF{
public void CS(String cai) {
System. out.println("3.开始炒菜:" +cai);
}
public void CC(CF cf,String cai) {
cf.CS(cai); //传菜单通知厨师炒菜
}

}
//类似于访问者 -- 菜单 中间调节 相当于把两个搭不上关系的人 关联起来
abstract class CD{
public abstract void FZ();//腐竹炒干辣椒
public abstract void DG();//豆鼓炒干辣椒
}
class CDclass extends CD{
public void DG() {
System. out.println("2.传菜单" );
CF cf= new CFclass();
cf.CC( new CFclass(),"豆鼓炒干辣椒" );
}
public void FZ() {
System. out.println("2.传菜单" );
CF cf= new CFclass();
cf.CC( new CFclass(),"腐竹炒干辣椒" );
}
}

  • 写回答

2条回答 默认 最新

  • 把分全给哥 2016-03-22 03:40
    关注

    you are right!

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月15日

悬赏问题

  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?