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 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式