java 设计模式 之 访问者模式(visitor)

上传人:第*** 文档编号:53581614 上传时间:2018-09-03 格式:PPT 页数:23 大小:341.50KB
返回 下载 相关 举报
java 设计模式 之 访问者模式(visitor)_第1页
第1页 / 共23页
java 设计模式 之 访问者模式(visitor)_第2页
第2页 / 共23页
java 设计模式 之 访问者模式(visitor)_第3页
第3页 / 共23页
java 设计模式 之 访问者模式(visitor)_第4页
第4页 / 共23页
java 设计模式 之 访问者模式(visitor)_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《java 设计模式 之 访问者模式(visitor)》由会员分享,可在线阅读,更多相关《java 设计模式 之 访问者模式(visitor)(23页珍藏版)》请在金锄头文库上搜索。

1、Java 设计模式 之 访问者模式(Visitor),商家如何收集用户的反馈意见,一个生产高能电池的厂家,下设一个客户服务部门,其主要任务之一就是收集用户的反馈意见,以便改进产品功能和服务质量。 以前,客户服务部门只是采用发放调查问卷的方式。调查问卷的问题千篇一律,不能针对特殊用户的兴趣点,尤其一些集体用户,不会认真对待这些问卷,懒得把问卷发到具体的使用者手里,而且,很多用户不愿意花时间把调查问卷寄回。调查结果不全面,不真实,几乎没有任何效果。,商家如何收集用户的反馈意见?,之后,个性化服务、CRM客户关系管理等概念兴起,客户服务部门引入了一套CRM客户(用户)关系管理系统,对客户信息进行管理

2、。针对不同用户的特点,采用不同的调查方式。采用电话、E-Mail、传真、问卷、登门拜访等多种方式,对用户进行调查访问。针对一些集体用户,比如,企事业单位用户,客户服务人员首先访问联系该单位集体,安排好时间之后,客户服务人员具体访问每一个具体用户,这些用户接受客户服务人员的访问,给出亲身使用电池产品的第一手资料 我们可以看到,这是一个典型的Visitor Pattern。客户服务部门就是Visitor,不同类型的用户就是被访问者。客户服务部门(Visitor)几乎做了所有的工作,尽量不给用户增加负担。,定义,表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这

3、些元素的新操作。 从定义可以看出结构对象是使用访问者模式必备条件,而且这个结构对象必须存在遍历自身各个对象的方法。这便类似于Java语言当中的collection概念了。 本质:预留通路,实现回调。,涉及角色,1.IVisitor 抽象访问者角色,为该对象结构中具体元素角色声明一个访问操作接口。该操作接口的名字和参数标识了发送访问请求给具休访问者的具休元素角色,这样访问者就可以通过该元素角色的特定接口直接访问它。 2.ConcreteVisitor.具体访问者角色,实现Visitor声明的接口。 3.Element 定义一个接受访问操作(accept(),它以一个访问者(Visitor)作为参

4、数。 4.ConcreteElement 具体元素,实现了抽象元素(Element)所定义的接受操作接口。,涉及角色,5.ObjectStructure 结构对象角色,这是使用访问者模式必备的角色。它具备以下特性: 能枚举它的元素; 可以提供一个高层接口以允许访问者访问它的元素; 如有需要,可以设计成一个复合对象或者一个聚集(如一个列表或无序集合)。,示例,IVisitor Visitor,public interface Visitor public void visitEnterpriseCustomer(EnterpriseCustomer ec); public void visitP

5、ersonalCustomer(PersonalCustomer pc); ,ConcreteVisitorPredilectionAnalyzeVisitor,public class PredilectionAnalyzeVisitor implements Visitor public void visitEnterpriseCustomer(EnterpriseCustomer ec) System.out.println(“现在对企业客户“ + ec.getName() + “进行产品偏好分析“); public void visitPersonalCustomer(Personal

6、Customer pc) System.out.println(“现在对个人客户“ + pc.getName() + “进行产品偏好分析“); ,ConcreteVisitorServiceRequestVisitor,public class ServiceRequestVisitor implements Visitor public void visitEnterpriseCustomer(EnterpriseCustomer ec) System.out.println(ec.getName() + “企业提出服务请求“); public void visitPersonalCusto

7、mer(PersonalCustomer pc) System.out.println(“客户“ + pc.getName() + “提出服务请求“); ,Element Customer,public abstract class Customer private String customerId; private String name; public String getCustomerId() return customerId; public void setCustomerId(String customerId) this.customerId = customerId; pu

8、blic String getName() return name; public void setName(String name) this.name = name; public abstract void accept(Visitor visitor); ,ConcreteElementEnterpriseCustomer,public class EnterpriseCustomer extends Customer private String linkman; private String linkTelephone; private String registerAddress

9、; public String getLinkman() return linkman; public void setLinkman(String linkman) this.linkman = linkman; public String getLinkTelephone() return linkTelephone; ,ConcreteElementEnterpriseCustomer,public void setLinkTelephone(String linkTelephone) this.linkTelephone = linkTelephone; public String g

10、etRegisterAddress() return registerAddress; public void setRegisterAddress(String registerAddress) this.registerAddress = registerAddress; public void accept(Visitor visitor) visitor.visitEnterpriseCustomer(this); ,ConcreteElementPersonalCustomer,public class PersonalCustomer extends Customer privat

11、e String telephone; private int age; public String getTelephone() return telephone; public void setTelephone(String telephone) this.telephone = telephone; public int getAge() return age; ,ConcreteElementPersonalCustomer,public void setAge(int age) this.age = age; public void accept(Visitor visitor)

12、visitor.visitPersonalCustomer(this); ,ObjectStructure ObjectStructure,public class ObjectStructure private Collection col = new ArrayList(); public void handleRequest(Visitor visitor) for(Customer cm : col) cm.accept(visitor); public void addElement(Customer ele) this.col.add(ele); ,Client,public cl

13、ass Client public static void main(String args) ObjectStructure os = new ObjectStructure(); Customer cml = new EnterpriseCustomer(); cml.setName(“ABC集团“); os.addElement(cml); Customer cm2 = new EnterpriseCustomer(); cm2.setName(“CDE公司“); os.addElement(cm2); Customer cm3 = new PersonalCustomer(); cm3.setName(“张三“); os.addElement(cm3);,Client,ServiceRequestVisitor srVisitor = new ServiceRequestVisitor(); os.handleRequest(srVisitor); PredilectionAnalyzeVisitor paVisitor = new PredilectionAnalyzeVisitor(); os.handleRequest(paVisitor); ,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号