- 浏览: 313693 次
- 性别:
- 来自: 重庆
文章分类
- 全部博客 (286)
- 设计模式 (14)
- spring (5)
- 开发工具 (12)
- java (19)
- apache.commons工具 (7)
- ibaits (5)
- extjs4.0 (4)
- 数据库 (2)
- spring工具类 (2)
- jquery1.8 (32)
- 杂记 (1)
- linux (2)
- Quart (1)
- springMVC (2)
- webservice (1)
- oracle (5)
- dwr (6)
- jbmp3 (27)
- lucene3.5 (27)
- javascript (18)
- hibernate3.3.2 (27)
- spring事务管理 (10)
- nio (2)
- strust2 (3)
- jvm (7)
- jquery-easyui-1.2.6 (22)
- 多线程 (14)
- maven (3)
- 常用正则表达式 (4)
最新评论
-
HF_SKY000:
请问:
一、能否提供一下密钥库文件的生成方法?
二、密钥库的密 ...
Java sslSocket 聊天实例
<!--StartFragment-->
<!--StartFragment-->
<!--StartFragment-->
抽象访问者(Visitor): 抽象类或者接口, 声明访问者可以访问哪些元素, 具体到程序中就是 visit方法的参数定义哪些对象是可以被访问的;
package VisitorPattern.visitor; import VisitorPattern.element.CommonEmployee; import VisitorPattern.element.ManagerEmployee; //申明可以访问那些元素 public interface Visitor { public void visit(CommonEmployee employee); public void visit(ManagerEmployee employee); }
package VisitorPattern.visitor; public interface ShowVisitor extends Visitor{ public String show(); }
package VisitorPattern.visitor; public interface TongjiVisitor extends Visitor{ public int getTotalSalary(); }
<!--StartFragment-->
具体访问者(ConcreteVisitor): 访问者访问到一个类后该怎么干(哎, 这个别读歪了), 要做什么事情;
package VisitorPattern.visitor; import VisitorPattern.element.CommonEmployee; import VisitorPattern.element.ManagerEmployee; public class ShowVisitorImpl implements ShowVisitor{ private String info = ""; @Override public void visit(CommonEmployee employee) { info = info + "只关心普通员工的工作:"+employee.getJob()+";"; } @Override public void visit(ManagerEmployee employee) { info = info + "只关心经理的姓名:"+employee.getName()+";"; } @Override public String show() { return info; } }
package VisitorPattern.visitor; import VisitorPattern.element.CommonEmployee; import VisitorPattern.element.ManagerEmployee; //用作统计 public class TongjiVisitorImpl implements TongjiVisitor{ private int commonEmTotalSalary; private int managerEmTotalSalary; @Override public void visit(CommonEmployee employee) { commonEmTotalSalary = commonEmTotalSalary+employee.getSalary(); } @Override public void visit(ManagerEmployee employee) { managerEmTotalSalary = managerEmTotalSalary + employee.getSalary(); } public int getTotalSalary(){ return commonEmTotalSalary + managerEmTotalSalary; } }
<!--StartFragment-->
抽象元素(Element): 接口或者抽象类, 声明接受那一类型的访问者访问, 程序上是通过 accept 方法
中的参数来定义;
<!--EndFragment-->
package VisitorPattern.element; import VisitorPattern.visitor.Visitor; public abstract class Employee { private String name; private String job; private int salary; public Employee(String name,String job,int salary){ this.name = name; this.job = job; this.salary = salary; } public abstract void accept(Visitor visitor); public String getName() { return name; } public void setName(String name) { this.name = name; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public int getSalary() { return salary; } public void setSalary(int salary) { this.salary = salary; } }
<!--StartFragment-->
具体元素:(ConcreteElement): 实现 accept 方法, 通常是 visitor.visit(this), 基本上都形成了一
个套路了;
<!--EndFragment-->
package VisitorPattern.element; import VisitorPattern.visitor.Visitor; public class CommonEmployee extends Employee{ public CommonEmployee(String name, String job,int salary) { super(name, job,salary); } @Override public void accept(Visitor visitor) { visitor.visit(this); } }
package VisitorPattern.element; import VisitorPattern.visitor.Visitor; public class ManagerEmployee extends Employee{ public ManagerEmployee(String name, String job,int salary) { super(name, job,salary); } @Override public void accept(Visitor visitor) { visitor.visit(this); } }
<!--StartFragment-->
结构对象(ObjectStruture): 容纳多个不同类、 不同接口的容器, 比如 List、 Set、 Map 等, 在项目中,
一般很少抽象出来这个角色;
<!--EndFragment-->
客户端调用
package VisitorPattern; import java.util.ArrayList; import java.util.List; import VisitorPattern.element.CommonEmployee; import VisitorPattern.element.Employee; import VisitorPattern.element.ManagerEmployee; import VisitorPattern.visitor.ShowVisitor; import VisitorPattern.visitor.TongjiVisitor; import VisitorPattern.visitor.TongjiVisitorImpl; import VisitorPattern.visitor.ShowVisitorImpl; public class Client { /** * @param args */ public static void main(String[] args) { ShowVisitor showVisitor = new ShowVisitorImpl(); TongjiVisitor tongjiVisitor = new TongjiVisitorImpl(); List<Employee> emList = new ArrayList<Employee>(); emList.add(new CommonEmployee("张三","美工",2500)); emList.add(new ManagerEmployee("王五","财务经理",7000)); emList.add(new CommonEmployee("李四","架构师",6000)); emList.add(new ManagerEmployee("赵六","IT经理",8000)); for (Employee employee : emList) { employee.accept(showVisitor); employee.accept(tongjiVisitor); } System.out.println(tongjiVisitor.getTotalSalary()); System.out.println(showVisitor.show()); } }
<!--EndFragment--><!--EndFragment-->
发表评论
-
中介者模式
2012-07-30 14:45 872<!--StartFragment--> 抽象中 ... -
原型模式
2012-07-30 13:09 860<!--StartFragment--> ... -
状态模式
2012-07-30 10:50 950State模式的定义: 不同的状态,不同的行为;或者说,每个状 ... -
责任链模式
2012-07-26 17:35 800抽象处理者 package ChainOfResponsib ... -
观察者模式
2012-07-26 17:24 588观察者: package ObserverPattern.o ... -
组合模式
2012-07-26 14:45 996<!--StartFragment--> ... -
装饰模式
2012-07-26 10:27 739MM们要过生日了 ,怎么也得表示下吧。最起码先送个蛋糕。蛋糕多 ... -
工厂模式
2012-06-25 20:41 839一、引子话说十年前,有一个爆发户,他家有三辆汽车(Benz(奔 ... -
单例模式
2012-06-25 20:38 964前面说提到的五种创建模式,主要解决的问题是如何创建对象,获得产 ... -
命令模式
2012-06-25 18:03 1066Command模式(命令) Java深入到一定程度,就不可 ... -
桥梁模式
2012-06-25 11:32 1127桥梁模式的用意是将问题的抽象和实现分离开来实现,通过用聚合代替 ... -
策略模式
2012-06-16 00:10 866本文探讨初学使用策略模式时遇到的一些疑惑,以及在工作中慢慢解决 ... -
建造者模式
2012-06-07 10:34 848Builder模式也叫建造者模式或者生成器模式,是由GoF提出 ...
相关推荐
访问者模式(Visitor)是一种行为设计模式,它允许在不修改对象结构的前提下向对象结构中的元素添加新的操作。这种模式将算法与数据结构分离,使得算法可以独立于数据结构进行变化,增强了系统的可扩展性。 在C++中...
《访问者模式在实际开发中的应用深度解析》 访问者模式是设计模式中的一种行为模式,它在实际的软件开发中具有重要的应用价值。通过理解并掌握访问者模式,开发者可以更好地实现对象结构中元素的操作,同时保持元素...
**访问者模式**是一种行为设计模式,它允许在不修改对象结构的情况下添加新的操作。这种模式主要用于处理具有复杂对象结构的情况,使得我们可以对结构中的每个元素执行特定操作,而无需暴露其内部实现。 访问者模式...
**访问者模式**是一种设计模式,它在软件工程中用于在不修改对象结构的前提下,为对象添加新的操作或行为。这种模式将数据结构与数据操作分离,使得可以在不改变对象本身的情况下扩展其功能。访问者模式是行为设计...
访问者模式是一种设计模式,属于行为模式类别,其主要目的是在不修改对象结构的前提下,为对象结构中的元素提供新的操作。这种模式的核心思想是将数据结构与数据操作分离,使得增加新的操作变得容易,同时也避免了对...
**访问者模式** 访问者模式(Visitor Pattern)是一种行为设计模式,它使你能在不修改对象结构的前提下向其添加新的操作。这种模式常用于处理具有相同接口或抽象类的对象结构,使得可以在不改变原有结构的基础上...
访问者模式是一种设计模式,它在对象结构中定义了一个访问并操作其元素的接口。这种模式主要用于在不改变对象结构的前提下增加对象的功能。在“访问者模式例子2”中,我们将深入探讨如何利用该模式来扩展系统的行为...
【访问者模式】是一种行为设计模式,其主要目的是在不修改已有对象结构的前提下,为对象增加新的操作。这种模式在23种经典设计模式中属于较为复杂的一种,因为它的理解和应用相对困难,可能导致代码可读性和可维护性...
访问者模式是一种设计模式,属于行为模式类别,它在软件工程中被用来分离对象结构与对这个结构进行操作的行为。这种模式的主要目的是使代码结构更加灵活,同时增加新的操作而无需修改现有对象结构。在“访问者模式”...
访问者模式是一种软件设计模式,它在对象结构中定义了一个访问者的接口,使得该访问者可以访问该结构中的每一个元素,同时不影响对象结构本身。这种模式的主要目的是将数据操作与数据结构分离,使得数据结构的变化...
访问者模式是一种软件设计模式,它在对象结构中定义了一个访问者的接口,使得该访问者可以访问该结构中的每一个元素,同时不影响这些元素自身的行为。这种模式的主要目的是将数据操作和业务逻辑分离,使得数据结构...
**访问者模式(Visitor)详解** 访问者模式是一种行为设计模式,它使你可以在不修改对象结构的情况下,为对象添加新的操作。这种模式的核心在于将数据结构与对这些数据的操作解耦,使得增加新的操作变得容易,同时...
访问者模式是一种软件设计模式,它允许在不改变对象结构的情况下,在对象的现有结构上增加新的操作。在Java中,这种模式尤其有用,因为它能够帮助我们保持类的封装性,同时提供了一种灵活的方式来扩展对象的功能。...
**访问者模式详解** 访问者模式是一种行为设计模式,它允许在不修改对象结构的情况下向对象添加新的操作。这种模式的核心思想是将数据结构与算法分离,使得算法可以在不改变对象结构的前提下增加对对象的操作。 在...
访问者模式是一种软件设计模式,属于行为模式范畴,它的核心思想是将数据结构与数据操作分离,使得在不修改原有对象结构的情况下,可以为对象添加新的操作。这种模式常用于处理具有复杂对象结构且需要对这些对象进行...
**访问者模式**是软件设计模式中的一种结构型模式,它允许在不修改对象结构的情况下,在对象上增加新的操作。这种模式将数据结构与数据操作分离,使得代码更易于维护和扩展。 在Java中实现访问者模式,通常包括以下...
**访问者模式(Visitor Pattern)**是一种行为设计模式,它提供了一种在不修改对象结构的情况下增加新操作的方法。这种模式的主要思想是将数据结构与算法分离,使得算法可以在不改变对象结构的情况下独立变化。 在...
访问者模式是一种设计模式,主要用于在不修改原有类层次结构的基础上,增加新的操作或功能。在UML(统一建模语言)文档中,访问者模式通常用于表示对象结构中的类如何接受并处理来自访问者的访问请求。这个模式的...