- 浏览: 885494 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (509)
- android (55)
- CSS (23)
- eclipse (25)
- Data Structes and Algorithms (53)
- J2SE (87)
- Java_面试学习_j2se (26)
- java_面试学习_非技术 (13)
- java_gui (2)
- java_设计模式 (27)
- JDBC (10)
- java_web (15)
- hibernate (5)
- Oracle (37)
- Struts2 (7)
- Word-----dos (24)
- Jbpm (3)
- java小技巧 (8)
- math (1)
- flex (12)
- WebService (4)
- 生活 (9)
- 小框架或小语言 (27)
- spring (1)
- 面试~~~软实力 (7)
- jstat的用法 (1)
- jmap (1)
- 数据链路层和传输层的流量控制区别 (1)
- shell (0)
- 财商 (1)
- javascript (0)
- js研究 (1)
- 代码收集 (0)
最新评论
-
海尔群:
http://jingyan.baidu.com/articl ...
android加密 -
完美天龙:
------------------------- ...
asm----字节码操纵 -
houniao1990:
大神,请问 string 类型 定义为 oracle的 cha ...
hibernate注解 -
JamesQian:
Line:103
f.doFilter(msg);
是否需 ...
责任链模式_过滤器模式 -
sacoole:
好评
interview--- 如何从N个数中选出最大(小)的n个数?
访问者模式是对迭代器模式的扩充,可以遍历不同的对象,然后执行不同的操作,也就是针对访问的对象不同,执行不同的操作 把类分成了两个部分,一部分是存储信息的,一部分是展示信息的 他和策略模式有相同点哈。。。。但是有那么一点点不同 public abstarct class Employee{ ...... public final void report(){ String info = "姓名:" + this.name + "\t"; info = info + "性别:" + (this.sex == FEMALE?"女":"男") + "\t"; info = info + "薪水:" + this.salary + "\t"; //获得员工的其他信息 info = info + this.getOtherInfo(); System.out.println(info); } //拼装员工的其他信息 protected abstract String getOtherInfo(); } /** * @author cbf4Life cbf4life@126.com * I'm glad to share my knowledge with you all. * 普通员工,也就是最小的小兵 */ public class CommonEmployee extends Employee { //工作内容,这个非常重要,以后的职业规划就是靠这个了 private String job; public String getJob() { return job; } public void setJob(String job) { this.job = job; } protected String getOtherInfo(){ return "工作:"+ this.job + "\t"; } } /** * @author cbf4Life cbf4life@126.com * I'm glad to share my knowledge with you all. * 经理级人物 */ public class Manager extends Employee { //这类人物的职责非常明确:业绩 private String performance; public String getPerformance() { return performance; } public void setPerformance(String performance) { this.performance = performance; } protected String getOtherInfo(){ return "业绩:"+ this.performance + "\t"; } } 但是不幸的是。。。。一个类中的东西也是不稳定的。。。这个类中的report()方法需要适应不同的变化。。。那么把他们放到CommonEmployee 和Manager 中不就得了。。但是需求是每个类中也不一定稳定。。。比如过几天我就想换一种方法来report().... 既然放到实现类中都不稳定。。那么只能用接口啦。。。。 public abstarct class Employee{ ...... public abstract void accept(IVisitor visitor); //这里都变,那么只能用接口 } 而这里与策略不同的是。。。。策略中的东西侧重点是实现一票其他的算法,这些算法与当事人无关。。。。而访问者中变化的东西还得访问原来的对象。。 public class Visitor implements IVisitor { //访问普通员工,打印出报表 public void visit(CommonEmployee commonEmployee) { //关键点在这里,他接受一个自己的对象,然后再做操作,也就是实现的时候要传一个参数,而这个参数是this而已啦 System.out.println(this.getCommonEmployee(commonEmployee)); } //访问部门经理,打印出报表 public void visit(Manager manager) { System.out.println(this.getManagerInfo(manager)); } //组装出基本信息 private String getBasicInfo(Employee employee){ String info = "姓名:" + employee.getName() + "\t"; info = info + "性别:" + (employee.getSex() == Employee.FEMALE?"女":"男") + "\t"; info = info + "薪水:" + 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; } } public class CommonEmployee extends Employee { 。。。。。。。 @Override public void accept(IVisitor visitor){ visitor.visit(this); } }
发表评论
-
设计模式--------享元模式
2010-11-15 14:04 1145Flyweight 是拳击比赛中的特用名词,意思是“特轻量 ... -
设计模式-------建造者模式
2010-11-10 20:38 1211状态间的自由切换 ... -
题目---银行帐户管理系统
2010-08-10 13:54 1478//注意:不用if else语句的前提是状态的流动 ... -
设计模式------组合模式
2010-08-09 14:28 1292这个标题说的是一种 ... -
概念-----依赖倒置
2010-08-09 13:45 1136依赖如果不导致,就是我依赖一个具体的东西。。。这是很正常的 ... -
概念-----好莱坞原则
2010-08-09 13:29 2432好莱坞,一个让许多俊男靓女欲罢不能的地方。在通往成功的路上,有 ... -
设计模式------适配器
2010-08-09 11:07 1002//适配器模式不适合在系统设计阶段采用,没有一个系统分析师 ... -
设计模式-----Singleton单件模式
2010-08-09 09:44 1139/* 1:同步一个方法可能造成程序执行效率下降100倍。。 ... -
题目----猫叫---设计模式
2010-08-06 16:20 1246题目:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒 要 ... -
设计模式------装饰器
2010-08-06 16:14 1061装饰模式和代理模式的 ... -
设计模式------观察者模式
2010-08-06 15:16 1277大量参考设计模式之禅 观察者---就是间谍哈,或者叫 ... -
设计模式------策略模式
2010-08-06 14:54 1005我认为核心思想是:把变化的方法也当作参数传过来 1. ... -
设计模式------模板方法模式---桥梁模式
2010-07-31 18:43 1378如果两个类的某个方法90%代码一样,怎么重用? 把不同的地方 ... -
题目-----面向对象设计题
2010-07-29 10:38 1496/*面向对象设计把握一个重要的经验:谁拥有数据,谁就对 ... -
设计模式------工厂模式
2010-07-09 13:25 1354工厂模式是一种创建型模式。。。其中创建型模式包括:单例,工 ... -
设计模式--------Facade~~外观模式~~门面
2010-07-09 11:34 1047可以看成事对多个方法的封装。。。。。对多个对象的代理。。目 ... -
设计模式-------中介者模式
2010-07-09 11:31 1248语义:类和类之间不 ... -
设计模式-----状态模式
2010-07-09 11:15 1152/** 一个类中的方法是不稳定的,他在不同的状态下需要不 ... -
设计模式-------命令模式
2010-07-09 10:23 1306重点中的重点: 把"执行者"类当中 ... -
设计模式------桥模式~bridge
2010-07-09 09:01 1019/** 语义:实现系统 ...
相关推荐
JAVA-设计模式-行为型模式-访问者模式
c++设计模式-行为型模式-访问者模式;qt工程;c++简单源码; 访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新...
行为型模式如观察者模式(Observer)、策略模式(Strategy)和访问者模式(Visitor),关注对象之间的交互和责任分配。 在C++中,设计模式的应用通常涉及到面向对象编程的特性,如继承、封装和多态。Qt4框架则为...
ios 平台实现设计模式-访问者模式,以最简单的代码实现访问者模式讲解,主旨在于了解访问者模式,博客:http://blog.sina.com.cn/s/blog_161d504630102wwxe.html
访问者模式(Visitor Pattern)是一种行为设计模式,它使你能在不修改对象结构的前提下向其添加新的操作。这种模式常用于处理具有相同接口或抽象类的对象结构,使得可以在不改变原有结构的基础上增加功能,实现对...
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...
3. **观察者模式** - QT4的信号和槽机制是观察者模式的实现。当一个对象的某个状态改变时,它可以发出信号,其他对象可以通过连接这些信号并定义槽函数来响应这些变化,实现了事件驱动的编程模型。 4. **装饰器模式...
设计模式专题之(二十)访问者模式--设计模式访问者模式示例代码(python--c++)
- 访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作,它可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 在C++中,这些设计模式通常通过面向对象的特性,如继承、封装和多态来实现...
访问者模式(Visitor Pattern)是一种行为型设计模式,它允许我们向一组已存在的类添加新的行为,而无需修改这些类。这种模式的核心思想是在不改变元素类的前提下,通过引入新的访问者来扩展系统的功能。 #### 二、...
- 访问者模式:表示一个作用于某对象结构中的各元素的操作,它可以在不改变各元素的类的前提下定义新的操作。 通过这个"通俗易懂版"的学习资源,你将能够深入理解每种设计模式的原理,掌握如何在实际项目中应用...
设计模式通常分为三类:创建型模式(如工厂方法、抽象工厂、单例、建造者、原型)、结构型模式(如适配器、桥接、装饰、组合、代理、外观、享元)和行为型模式(如责任链、命令、解释器、迭代器、访问者、备忘录、...
PPT内容包括:内附代码,实例,方便理解。 继承、封装、多态、UML 设计模式02 设计模式03-创建型模式 ...设计模式16-策略模式、模板方法、访问者 此PPT实例便于理解,对于深入理解OO思想有很大帮助。
设计模式包括创建型模式(如单例、工厂方法、抽象工厂等)、结构型模式(如适配器、装饰器、代理等)和行为型模式(如策略、观察者、职责链等)。这些模式提供了良好的可复用性和可扩展性,帮助开发者遵循“开闭原则...
创建型模式,共五种:工厂方法模式、抽象工厂模式、...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
- 访问者模式(Visitor):表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 这些设计模式不仅在PHP中适用,也是跨语言的编程思想,可以帮助开发者...
在8051微控制器上实现这种设计模式,需要考虑处理器的时钟周期、中断响应时间以及存储器访问速度等因素,以确保时间约束得到满足。 此外,8051系列微控制器的开发通常涉及汇编语言编程或C语言编程,这两种语言都能...
### 设计模式精解——GoF 23种设计模式解析及C++实现源码 #### 引言 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。GoF(Gang of Four)所提出的23种设计模式,被认为是面向对象...
访问者模式(Visitor)是一种行为设计模式,它允许在不修改对象结构的前提下向对象结构中的元素添加新的操作。这种模式将算法与数据结构分离,使得算法可以独立于数据结构进行变化,增强了系统的可扩展性。 在C++中...