- 浏览: 428568 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 932AbstractMediator.java代码如下: pa ... -
设计模式----原型模式(prototype pattern)
2013-07-21 22:51 638AdvTemplate.java代码如下: package ... -
设计模式----状态模式(state pattern)
2013-07-21 22:48 1205LiftState.java代码如下: package ... -
设计模式----观察者模式(observer)
2013-07-20 19:53 1071这里采用两种方式实现观察者模式:第一种方式为完全自己写, ... -
设计模式----组合模式(composite)
2013-07-20 16:13 930该设计模式是以公司的组织结构为背景的 Crop.java代码 ... -
设计模式----迭代器模式(Iterator)
2013-07-20 15:59 918IProject.java代码如下: package co ... -
设计模式----装饰者模式(decorator pattern)
2013-07-15 09:08 1028SchoolReport.java代码如下: packag ... -
设计模式----命令模式(command pattern)
2013-07-15 09:09 957Group.java代码如下: pa ... -
设计模式----桥梁模式(bridge pattern)
2013-07-14 22:21 1183Product.java代码如下: package com ... -
设计模式----模板方法模式(template method pattern)
2013-07-14 17:00 1147HummerModel.java代码如下: packag ... -
设计模式----适配器模式(adapter)
2013-07-14 13:37 865IUserInfo.java代码如下: package c ... -
设计模式----门面模式(facade)
2013-07-14 13:30 946LetterProcess.java代码如下 ... -
设计模式----抽象工厂模式(abstract factory pattern)
2013-07-13 23:09 913Human.java代码如下: package com. ... -
设计模式----工厂方法模式(factory method pattern)
2013-07-10 22:19 1083给定一个工厂类,用这个工厂类造出一堆对象来,这些对象对应的类实 ... -
设计模式----多例模式(Multition)
2013-07-02 22:47 1034Emperor.java 代码如下: ... -
设计模式----单例模式(singleton)
2013-06-30 22:17 757单例就是唯一的意思。 第一种单例实现方式(在多线程环境中存在 ... -
设计模式----代理模式(proxy)
2013-06-30 22:02 960代理模式主要使用了java ... -
设计模式----策略模式(strategy)
2013-06-29 22:17 1088本文参考别人设计模式的一个例子。 关于诸葛亮的三个锦囊妙计的 ... -
装饰着模式(decorator)
2012-09-09 21:51 1008一下代码就是运用了装饰者模式: package com.ba ... -
观察者模式(observer)
2012-09-09 19:36 943设计模式中观察者模式的实现有很多方式,这里列出两种实现方式 1 ...
相关推荐
**访问者模式(VisitorPattern)** 访问者模式是一种行为设计模式,它使你能在不修改对象结构的前提下向对象添加新的操作。这种模式常用于处理具有复杂逻辑的对象结构,特别是当你需要对这些对象进行多态操作时。访问...
访问者模式(Visitor Pattern)是一种行为型设计模式,它允许我们向一组已存在的类添加新的行为,而无需修改这些类。这种模式的核心思想是在不改变元素类的前提下,通过引入新的访问者来扩展系统的功能。 #### 二、...
代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法...访问者模式(Visitor Pattern)、状态模式(State Pattern)、原型模式(Prototype Pattern)、中介者模式(Mediator Pattern)、解释器模式...
**访问者模式(Visitor Pattern)**是一种行为设计模式,它提供了一种在不修改对象结构的情况下增加新操作的方法。这种模式的主要思想是将数据结构与算法分离,使得算法可以在不改变对象结构的情况下独立变化。 在...
算法的封装与切换——策略模式(四) 模板方法模式-Template Method Pattern 模板方法模式深度解析(一) 模板方法模式深度解析(二) 模板方法模式深度解析(三) 访问者模式-Visitor Pattern 操作复杂对象结构——...
访问者模式(Visitor Pattern)是一种行为设计模式,它使你能在不修改对象结构的前提下向其添加新的操作。这种模式常用于处理具有相同接口或抽象类的对象结构,使得可以在不改变原有结构的基础上增加功能,实现对...
访问者模式(Visitor Pattern)是软件工程领域中一种重要的设计模式,主要用于处理数据结构中元素的操作问题。该模式的核心思想在于将数据操作与数据结构本身相分离,通过这种方式,可以在不改变数据结构的前提下...
访问者模式(Visitor Pattern)是 Java 中的一种行为型设计模式,它允许开发者在不修改对象结构的前提下定义新的操作。这种模式将对象结构和操作分离开来,使得操作可以独立地应用于对象结构中的元素。 在访问者...
- 访问者(Visitor):表示一个作用于某对象结构中的各元素的操作,它可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 学习和掌握设计模式有助于提升软件设计的灵活性、可维护性和可扩展性。通过阅读...
包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)...Strategy)、模板方法模式(Template Method)和访问者模式(Visitor)...
- 访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 每种设计模式都有其特定的应用场景和优缺点,理解并灵活运用这些模式,...
本资料包“DesignPattern - DesignPattern.zip”提供了对C++11中23种设计模式的全面讲解,特别是结合指针使用的部分,以下是对这些知识点的详细阐述: 1. **单例模式(Singleton)**:确保一个类只有一个实例,并...
- **访问者**(Visitor):表示一个作用于某对象结构中的各元素的操作。 #### 八、设计模式的应用总结 **设计模式的应用总结:** - **期望从设计模式获得的价值**:设计模式可以帮助开发者更高效地解决问题,提高...
- **访问者模式(Visitor)**:表示一个作用于某对象结构中的各元素的操作。 #### 五、创建型模式详解 **工厂模式(The Factory Pattern)**: - **定义**:定义一个用于创建对象的接口,让子类决定实例化哪一个类。...
2. **具体访问者(Concrete Visitor)**:实现抽象访问者接口中的所有方法,提供了对元素的具体操作实现。 3. **抽象元素(Element)**:定义一个接受访问者的方法,该方法将访问者对象传递给元素。 4. **具体元素...
如命令(Command)、解释器(Interpreter)、迭代器(Iterator)、中介者(Mediator)、备忘录(Memento)、观察者(Observer)、状态(State)、策略(Strategy)、模板方法(Template Method)、访问者(Visitor)...
设计模式是软件工程中经过长期实践验证的有效解决方案模板,它们为常见的编程问题提供了...在压缩包中的"DesignPattern-master"文件夹中,你将找到每个设计模式的详细实现示例,这将是你学习和理解设计模式的宝贵资源。
行为型模式如策略(Strategy)、模板方法(Template Method)、观察者(Observer)、命令(Command)、迭代器(Iterator)、访问者(Visitor)、备忘录(Memento)、状态(State)、职责链(Chain of Responsibility...
访问者模式是一种软件设计模式,它在对象结构中定义了一个访问者的接口,使得该访问者可以访问该结构中的每一个元素,同时不影响对象结构本身。这种模式的主要目的是将数据操作与数据结构分离,使得数据结构的变化...
- 访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作,它可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 在"design-pattern-master"中,你可以期待找到各种设计模式的具体实现,每...