- 浏览: 422155 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (170)
- java (77)
- javascript (5)
- jsp (1)
- servlet (6)
- struts (8)
- hibernate (3)
- spring (4)
- ajax (5)
- jquery (3)
- apache cxf (0)
- ext.js (1)
- hadoop (0)
- android (0)
- html5 (2)
- linux (5)
- flex (1)
- tomcat (1)
- jboss (0)
- nginx (0)
- mysql (16)
- sql server (3)
- oracle (4)
- div+css (0)
- mybatis (4)
- design patterns (22)
- xml (2)
- postgresql (3)
- velocity (1)
- freemarker (1)
- kendo-ui (2)
- ibatis (1)
- socket (1)
- C and C++ (1)
- C# (2)
- 程序设计----算法 (0)
- jersey (1)
- dd (0)
- perl (1)
- shell (0)
最新评论
-
书策稠浊:
兄弟,这tm是Java?
java调用百度地图和谷歌地图 -
fengyunlouyanyu:
jquery----删除指定id的div下的img -
yangjianzhouctgu:
Neoman 写道hi,我看你引入了kendo.web.min ...
kendo-ui中kendoGrid的用法 -
Neoman:
hi,我看你引入了kendo.web.min.js 这个js, ...
kendo-ui中kendoGrid的用法 -
yangjianzhouctgu:
llscp 写道这是JS吧...对的呀
java调用百度地图和谷歌地图
IVisitor.java代码如下:
Visitor.java代码如下:
Employee.java代码如下:
Manager.java代码如下:
CommonEmployee.java代码如下:
Client.java代码如下:
运行结果如下:
package com.designPattern.visitor; public interface IVisitor { public void visit(CommonEmployee commonEmployee); public void visit(Manager manager); }
Visitor.java代码如下:
package com.designPattern.visitor; public class Visitor implements IVisitor{ @Override public void visit(CommonEmployee commonEmployee) { System.out.println(this.getCommonEmployee(commonEmployee)); } @Override public void visit(Manager manager) { System.out.println(this.getManagerInfo(manager)); } private String getBasicInfo(Employee employee){ String info = "姓名:"+employee.getName()+"\t"+"性别:"+(employee.getSex()==Employee.FEMALE?"女":"男")+"\t"+"薪水:"+employee.getSalary()+"\t"; return info; } private String getManagerInfo(Manager manager){ String basicInfo = this.getBasicInfo(manager); String otherInfo = "业绩:"+manager.getPerformance()+"\t"; return basicInfo+otherInfo; } private String getCommonEmployee(CommonEmployee commonEmployee){ String basicInfo = this.getBasicInfo(commonEmployee); String otherInfo = "工作:"+commonEmployee.getJob()+"\t"; return basicInfo+otherInfo; } }
Employee.java代码如下:
package com.designPattern.visitor; public abstract class Employee { public final static int MALE = 0; public final static int FEMALE = 1; private String name; private int salary; private int sex ; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getSalary() { return salary; } public void setSalary(int salary) { this.salary = salary; } public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } public abstract void accept(IVisitor visitor); }
Manager.java代码如下:
package com.designPattern.visitor; public class Manager extends Employee{ private String performance ; public String getPerformance() { return performance; } public void setPerformance(String performance) { this.performance = performance; } public void accept(IVisitor visitor) { visitor.visit(this); } }
CommonEmployee.java代码如下:
package com.designPattern.visitor; public class CommonEmployee extends Employee{ private String job; public String getJob() { return job; } public void setJob(String job) { this.job = job; } public void accept(IVisitor visitor) { visitor.visit(this); } }
Client.java代码如下:
package com.designPattern.visitor; import java.util.ArrayList; import java.util.List; public class Client { public static void main(String[] args) { for(Employee employee:mockEmployee()){ employee.accept(new Visitor()); } } public static List<Employee> mockEmployee(){ List<Employee> employeeList = new ArrayList<Employee>(); CommonEmployee zhangsan = new CommonEmployee(); zhangsan.setJob("java开发工程师"); zhangsan.setName("张三"); zhangsan.setSalary(1900); zhangsan.setSex(Employee.MALE); employeeList.add(zhangsan); CommonEmployee liSi = new CommonEmployee(); liSi.setJob("美工"); liSi.setName("李四"); liSi.setSalary(4000); liSi.setSex(Employee.FEMALE); employeeList.add(liSi); Manager wangwu = new Manager(); wangwu.setName("王五"); wangwu.setPerformance("业绩很好"); wangwu.setSalary(20000); wangwu.setSex(Employee.MALE); employeeList.add(wangwu); return employeeList; } }
运行结果如下:
姓名:张三 性别:男 薪水:1900 工作:java开发工程师 姓名:李四 性别:女 薪水:4000 工作:美工 姓名:王五 性别:男 薪水:20000 业绩:业绩很好
发表评论
-
设计模式----中介者模式(demiator pattern)
2013-07-21 22:55 894AbstractMediator.java代码如下: pa ... -
设计模式----原型模式(prototype pattern)
2013-07-21 22:51 601AdvTemplate.java代码如下: package ... -
设计模式----状态模式(state pattern)
2013-07-21 22:48 1157LiftState.java代码如下: package ... -
设计模式----观察者模式(observer)
2013-07-20 19:53 1034这里采用两种方式实现观察者模式:第一种方式为完全自己写, ... -
设计模式----组合模式(composite)
2013-07-20 16:13 896该设计模式是以公司的组织结构为背景的 Crop.java代码 ... -
设计模式----迭代器模式(Iterator)
2013-07-20 15:59 881IProject.java代码如下: package co ... -
设计模式----装饰者模式(decorator pattern)
2013-07-15 09:08 984SchoolReport.java代码如下: packag ... -
设计模式----命令模式(command pattern)
2013-07-15 09:09 924Group.java代码如下: pa ... -
设计模式----桥梁模式(bridge pattern)
2013-07-14 22:21 1143Product.java代码如下: package com ... -
设计模式----模板方法模式(template method pattern)
2013-07-14 17:00 1117HummerModel.java代码如下: packag ... -
设计模式----适配器模式(adapter)
2013-07-14 13:37 831IUserInfo.java代码如下: package c ... -
设计模式----门面模式(facade)
2013-07-14 13:30 910LetterProcess.java代码如下 ... -
设计模式----抽象工厂模式(abstract factory pattern)
2013-07-13 23:09 883Human.java代码如下: package com. ... -
设计模式----工厂方法模式(factory method pattern)
2013-07-10 22:19 1038给定一个工厂类,用这个工厂类造出一堆对象来,这些对象对应的类实 ... -
设计模式----多例模式(Multition)
2013-07-02 22:47 1002Emperor.java 代码如下: ... -
设计模式----单例模式(singleton)
2013-06-30 22:17 731单例就是唯一的意思。 第一种单例实现方式(在多线程环境中存在 ... -
设计模式----代理模式(proxy)
2013-06-30 22:02 922代理模式主要使用了java ... -
设计模式----策略模式(strategy)
2013-06-29 22:17 1036本文参考别人设计模式的一个例子。 关于诸葛亮的三个锦囊妙计的 ... -
装饰着模式(decorator)
2012-09-09 21:51 979一下代码就是运用了装饰者模式: package com.ba ... -
观察者模式(observer)
2012-09-09 19:36 906设计模式中观察者模式的实现有很多方式,这里列出两种实现方式 1 ...
相关推荐
算法的封装与切换——策略模式(四) 模板方法模式-Template Method Pattern 模板方法模式深度解析(一) 模板方法模式深度解析(二) 模板方法模式深度解析(三) 访问者模式-Visitor Pattern 操作复杂对象结构——...
表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
访问者模式(Visitor Pattern)是GoF提出的23种设计模式中的一种,属于行为模式。它表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。从定义可以看出,...
访问者模式(Visitor Pattern) 4. J2EE 模式 MVC 模式(MVC Pattern) 业务代表模式(Business Delegate Pattern) 数据访问对象模式(Dao Pattern) 前端控制器模式(Front Controller Pattern) 拦截过滤器...
策略模式(Strategy Pattern) 抽象工厂模式(Abstract Factory Pattern) 代理模式(Proxy Pattern) 单例模式(Singleton Pattern) 迭代器模式(Iterator Pattern) 访问者模式(Visitor Pattern) 工厂方法模式(Factory ...
23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm” 供参考。 注:项目在 VS2008 下使用。 创建型: ...访问者模式(Visitor)
设计模式(20)-Visitor Pattern 192 一、 访问者(Visitor)模式 192 二、 访问者模式的结构 193 三、 示意性源代码 194 四、 一个实际应用Visitor模式的例子 198 五、 在什么情况下应当使用访问者模式 202 六、 ...
1、策略模式STRATEGY PATTERN 2、代理模式PROXY PATTERN 3、单例模式SINGLETON PATTERN ...18、访问者模式VISITOR PATTERN 19、状态模式 20、原型模式 21、中介者模式 22、解释器模式 23、亨元模式 24、备忘录模式
访问者模式(Visitor Pattern) 4 J2EE 模式 这些设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的。 MVC 模式(MVC Pattern) 业务代表模式(Business Delegate Pattern) 组合实体模式(Composite ...
创建型模式用来处理对象的创建过程,主要包含以下5种设计模式: 工厂方法模式(Factory Method Pattern) 抽象工厂模式(Abstract Factory Pattern) 建造者模式(Builder... 访问者模式(Visitor Pattern)
创建型: 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method) 5.... 访问者模式(Visitor Pattern) 23. 状态模式(State Pattern)
设计模式(20)-Visitor Pattern 一、 访问者(Visitor)模式 二、 访问者模式的结构 三、 示意性源代码 四、 一个实际应用Visitor模式的例子 五、 在什么情况下应当使用访问者模式 六、 使用访问者模式的...
在个人自学阶段的23种设计模式代码的全部实现,全部使用Java编写,其中还包括各个设计模式在源码中的使用,每种设计模式都举了一个简单的小例子来进行实现,并加以注释 包名解释 一、DesignPattern 1.1 创建型模式 ...
快速树访问者访问者模式 设计一个开发以下两个访问者的访问者:一个访问者,它读取输入文件input.txt,并用文件中的所有单词填充树数据结构。 使用树数据结构将第二位访问者的性能最大化。 使用该树数据结构的插入...
C# 32种设计模式: 创建型: 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) ... 访问者模式(Visitor Pattern) 23. 状态模式(State Pattern)
Java高手真经 - Java Web系统设计与架构 源代码(一)设计...pattern/src/behavior/visitor //13.9访问者模式 pattern/src/behavior/mediator //13.10中介者模式 pattern/src/behavior/interpreter //13.11解释器模式
5.11 visitor(访问者)—对象行为型 模式 218 5.12 行为模式的讨论 228 5.12 1 封装变化 228 5.12.2 对象作为参数 228 5.12.3 通信应该被封装还是被分布 229 5.12.4 对发送者和接收者解耦 229 5.12.5 总结 ...
C#设计模式(23种设计模式) 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4. 工厂方法模式...22. 访问者模式(Visitor Pattern) 23. 状态模式(State Pattern)
5.11 VISITOR(访问者)—对象行为型 模式 218 5.12 行为模式的讨论 228 5.12 1 封装变化 228 5.12.2 对象作为参数 228 5.12.3 通信应该被封装还是被分布 229 5.12.4 对发送者和接收者解耦 229 5.12.5 总结 231 第6...