- 浏览: 658409 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (609)
- java (139)
- 数据库 (107)
- 微信 (23)
- IT生活 (5)
- web前端 (74)
- SSH (11)
- 设计模式 (12)
- 重要资料 (11)
- 其他 (15)
- java技巧 (23)
- 服务器 (9)
- 2D/GUI (3)
- JAVA3D (2)
- ANT (5)
- Apache项目 (19)
- 数据类型 (10)
- 报表 (3)
- Collections (6)
- SQL/JDBC (15)
- 开发类 (6)
- EJB (6)
- Email (6)
- 文件读写 (2)
- 游戏 (0)
- Flex (2)
- Generic (2)
- HIbernate (12)
- I18N (5)
- Java EE (9)
- java ME (4)
- JDK 6 (8)
- JNDI/LDAP (5)
- JSP (7)
- JSTL (2)
- 正则表达式 (2)
- 安全 (2)
- Struts2 (12)
- Spring (4)
- Web服务 (10)
- Xml (1)
- JavaScript (30)
- AJAX (7)
- 验证 (4)
- 上传下载 (1)
- office办公软件 (1)
- Android (2)
- IOS (0)
- Dubbo (3)
- memcached/redis (1)
- 小程序 (1)
- 微信公众号 (0)
最新评论
-
wf_wangfeng:
怎么我用第一种方法不行呢 alert(document.rea ...
当jsp页面完全加载完成后执行一个js函数 -
Lori_Liu:
有帮助,至少可以解决了目前所遇到的问题!谢谢..
当jsp页面完全加载完成后执行一个js函数 -
starbhhc:
String actionMessage = new Stri ...
Java读取txt文件乱码 -
starbhhc:
Sev7en_jun 写道GOOD
客气,互相交流。。
javaeye论坛规则小测验(答案)--star -
Sev7en_jun:
GOOD
javaeye论坛规则小测验(答案)--star
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
public class RunChainPattern {
public static void main(String [] arguments){
System.out.println("Example for the Chain of Responsibility pattern");
System.out.println();
System.out.println("This code uses chain of responsibility to obtain");
System.out.println(" the owner for a particular ProjectItem, and to");
System.out.println(" build up a list of project details. In each case,");
System.out.println(" a call to the appropriate getter method, getOwner");
System.out.println(" or getDetails, will pass the method call up the");
System.out.println(" project tree.");
System.out.println("For getOwner, the call will return the first non-null");
System.out.println(" owner field encountered. For getDetails, the method");
System.out.println(" will build a series of details, stopping when it");
System.out.println(" reaches a ProjectItem that is designated as a");
System.out.println(" primary task.");
System.out.println();
System.out.println("Deserializing a test Project for Visitor pattern");
System.out.println();
if (!(new File("data.ser").exists())){
DataCreator.serialize("data.ser");
}
Project project = (Project)(DataRetriever.deserializeData("data.ser"));
System.out.println("Retrieving Owner and details for each item in the Project");
System.out.println();
getItemInfo(project);
}
private static void getItemInfo(ProjectItem item){
System.out.println("ProjectItem: " + item);
System.out.println(" Owner: " + item.getOwner());
System.out.println(" Details: " + item.getDetails());
System.out.println();
if (item.getProjectItems() != null){
Iterator subElements = item.getProjectItems().iterator();
while (subElements.hasNext()){
getItemInfo((ProjectItem)subElements.next());
}
}
}
}
interface Contact extends Serializable{
public static final String SPACE = " ";
public String getFirstName();
public String getLastName();
public String getTitle();
public String getOrganization();
public void setFirstName(String newFirstName);
public void setLastName(String newLastName);
public void setTitle(String newTitle);
public void setOrganization(String newOrganization);
}
class ContactImpl implements Contact{
private String firstName;
private String lastName;
private String title;
private String organization;
public ContactImpl(){}
public ContactImpl(String newFirstName, String newLastName,
String newTitle, String newOrganization){
firstName = newFirstName;
lastName = newLastName;
title = newTitle;
organization = newOrganization;
}
public String getFirstName(){ return firstName; }
public String getLastName(){ return lastName; }
public String getTitle(){ return title; }
public String getOrganization(){ return organization; }
public void setFirstName(String newFirstName){ firstName = newFirstName; }
public void setLastName(String newLastName){ lastName = newLastName; }
public void setTitle(String newTitle){ title = newTitle; }
public void setOrganization(String newOrganization){ organization = newOrganization; }
public String toString(){
return firstName + SPACE + lastName;
}
}
class Task implements ProjectItem{
private String name;
private ArrayList projectItems = new ArrayList();
private Contact owner;
private String details;
private ProjectItem parent;
private boolean primaryTask;
public Task(ProjectItem newParent){
this(newParent, "", "", null, false);
}
public Task(ProjectItem newParent, String newName,
String newDetails, Contact newOwner, boolean newPrimaryTask){
parent = newParent;
name = newName;
owner = newOwner;
details = newDetails;
primaryTask = newPrimaryTask;
}
public Contact getOwner(){
if (owner == null){
return parent.getOwner();
}
else{
return owner;
}
}
public String getDetails(){
if (primaryTask){
return details;
}
else{
return parent.getDetails() + EOL_STRING + "\t" + details;
}
}
public String getName(){ return name; }
public ArrayList getProjectItems(){ return projectItems; }
public ProjectItem getParent(){ return parent; }
public boolean isPrimaryTask(){ return primaryTask; }
public void setName(String newName){ name = newName; }
public void setOwner(Contact newOwner){ owner = newOwner; }
public void setParent(ProjectItem newParent){ parent = newParent; }
public void setPrimaryTask(boolean newPrimaryTask){ primaryTask = newPrimaryTask; }
public void setDetails(String newDetails){ details = newDetails; }
public void addProjectItem(ProjectItem element){
if (!projectItems.contains(element)){
projectItems.add(element);
}
}
public void removeProjectItem(ProjectItem element){
projectItems.remove(element);
}
public String toString(){
return name;
}
}
class DataCreator{
private static final String DEFAULT_FILE = "data.ser";
public static void main(String [] args){
String fileName;
if (args.length == 1){
fileName = args[0];
}
else{
fileName = DEFAULT_FILE;
}
serialize(fileName);
}
public static void serialize(String fileName){
try{
serializeToFile(createData(), fileName);
}
catch (IOException exc){
exc.printStackTrace();
}
}
private static Serializable createData(){
Contact contact1 = new ContactImpl("Dennis", "Moore", "Managing Director", "Highway Man, LTD");
Contact contact2 = new ContactImpl("Joseph", "Mongolfier", "High Flyer", "Lighter than Air Productions");
Contact contact3 = new ContactImpl("Erik", "Njoll", "Nomad without Portfolio", "Nordic Trek, Inc.");
Contact contact4 = new ContactImpl("Lemming", "", "Principal Investigator", "BDA");
Project project = new Project("IslandParadise", "Acquire a personal island paradise", contact2);
Task task1 = new Task(project, "Fortune", "Acquire a small fortune", contact4, true);
Task task2 = new Task(project, "Isle", "Locate an island for sale", null, true);
Task task3 = new Task(project, "Name", "Decide on a name for the island", contact3, false);
project.addProjectItem(task1);
project.addProjectItem(task2);
project.addProjectItem(task3);
Task task4 = new Task(task1, "Fortune1", "Use psychic hotline to predict winning lottery numbers", null, false);
Task task5 = new Task(task1, "Fortune2", "Invest winnings to ensure 50% annual interest", contact1, true);
Task task6 = new Task(task2, "Isle1", "Research whether climate is better in the Atlantic or Pacific", contact1, true);
Task task7 = new Task(task2, "Isle2", "Locate an island for auction on EBay", null, false);
Task task8 = new Task(task2, "Isle2a", "Negotiate for sale of the island", null, false);
Task task9 = new Task(task3, "Name1", "Research every possible name in the world", null, true);
Task task10 = new Task(task3, "Name2", "Eliminate any choices that are not coffee-related", contact4, false);
task1.addProjectItem(task4);
task1.addProjectItem(task5);
task2.addProjectItem(task6);
task2.addProjectItem(task7);
task2.addProjectItem(task8);
task3.addProjectItem(task9);
task3.addProjectItem(task10);
return project;
}
private static void serializeToFile(Serializable content, String fileName) throws IOException{
ObjectOutputStream serOut = new ObjectOutputStream(new FileOutputStream(fileName));
serOut.writeObject(content);
serOut.close();
}
}
interface ProjectItem extends Serializable{
public static final String EOL_STRING = System.getProperty("line.separator");
public ProjectItem getParent();
public Contact getOwner();
public String getDetails();
public ArrayList getProjectItems();
}
class Project implements ProjectItem{
private String name;
private Contact owner;
private String details;
private ArrayList projectItems = new ArrayList();
public Project(){ }
public Project(String newName, String newDetails, Contact newOwner){
name = newName;
owner = newOwner;
details = newDetails;
}
public String getName(){ return name; }
public String getDetails(){ return details; }
public Contact getOwner(){ return owner; }
public ProjectItem getParent(){ return null; }
public ArrayList getProjectItems(){ return projectItems; }
public void setName(String newName){ name = newName; }
public void setOwner(Contact newOwner){ owner = newOwner; }
public void setDetails(String newDetails){ details = newDetails; }
public void addProjectItem(ProjectItem element){
if (!projectItems.contains(element)){
projectItems.add(element);
}
}
public void removeProjectItem(ProjectItem element){
projectItems.remove(element);
}
public String toString(){
return name;
}
}
class DataRetriever{
public static Object deserializeData(String fileName){
Object returnValue = null;
try{
File inputFile = new File(fileName);
if (inputFile.exists() && inputFile.isFile()){
ObjectInputStream readIn = new ObjectInputStream(new FileInputStream(fileName));
returnValue = readIn.readObject();
readIn.close();
}
else {
System.err.println("Unable to locate the file " + fileName);
}
}
catch (ClassNotFoundException exc){
exc.printStackTrace();
}
catch (IOException exc){
exc.printStackTrace();
}
return returnValue;
}
}
发表评论
-
面向对象设计原则
2010-07-23 16:07 12941. 迪米特法则(LoD) ... -
浮点数的0和无穷表示法
2010-07-19 16:13 2574浮点数的0和无穷表示法 浮点数的表示随机 ... -
Command模式例子1
2010-07-02 15:33 432import java.awt.Button; imp ... -
Command模式例子2
2010-07-02 15:33 740import java.awt.Button; imp ... -
Command模式例子3
2010-07-02 15:33 791import java.awt.Button; imp ... -
Command模式例子4
2010-07-02 15:32 879import java.awt.Button; imp ... -
Command模式2例子
2010-07-02 15:32 1147//[C] 2002 Sun Microsystems, In ... -
设计模式之 动态代理
2010-07-02 15:31 855import java.lang.reflect.Invoca ... -
代理模式-虚拟代理
2010-07-02 15:31 833[环境]:StarUML5.0 + JDK6 虚拟代理: ... -
设计模式之原型模式(Prototype)
2010-07-02 15:30 513读了好多原型模式的文章,有些写的比较难以理解,原型模式的核心是 ... -
Singleton(单例)模式
2010-07-02 15:30 781Singleton 模式的宗旨在于确保某个类只有一个实例,别且 ...
相关推荐
这份名为"设计模式例子文档,简单易学"的资源,显然是为了帮助开发者更直观、更快速地理解和应用设计模式。设计模式并非具体的代码或库,而是一种通用的解决方案模板,可以在不同的软件开发过程中复用,以提高代码的...
**Chain of Responsibility模式详解** Chain of Responsibility模式是GOF(GoF,Gang of Four)在他们的经典著作《设计模式:可复用面向对象软件的基础》中提出的23种设计模式之一,属于行为模式类别。这个模式的...
* 责任链模式(Chain of Responsibility) * 命令模式(Command) * 备忘录模式(Memento) * 状态模式(State) * 访问者模式(Visitor) * 中介者模式(Mediator) * 解释器模式(Interpreter) 二、java 的 23 ...
在这个“设计模式例子和PPT”压缩包中,包含的内容主要是关于设计模式的基本原则、UML类图以及一些实际的应用示例。 设计模式分为三大类:创建型模式、结构型模式和行为型模式。每种模式都有其特定的目标和适用场景...
- **责任链模式(Chain of Responsibility)**:避免将处理请求的发送者和接收者耦合在一起,让多个对象都有可能处理这个请求。将这些对象连接成一条链,并沿着这条链传递请求,直到有对象处理它为止。 - **命令...
责任链模式(Chain of Responsibility)是一种行为设计模式,它允许将请求沿着处理者对象的链进行传递,直到某个对象能够处理这个请求。这种模式的主要优点是解耦了发送者和接收者之间的关系,使得系统更加灵活,...
责任链模式(Chain of Responsibility Pattern)是设计模式中的一种行为模式,它的主要目的是将请求的发送者和接收者解耦,使得多个对象有机会处理这个请求,形成一条责任链。在这个链上,请求会沿着链传递,直到有...
在Java等面向对象语言中,`Filter` 框架就是一个很好的Chain of Responsibility模式的例子。比如在Servlet中的`FilterChain`接口,它维护了一个过滤器链,每个过滤器都有机会处理请求或调用`doFilter()`方法将请求...
标题"设计模式例子(高手可以不看)"可能暗示这是一份面向初学者或中级开发者的学习资料,包含了设计模式的实际应用示例。描述中的“对设计模式的一个练习”进一步确认了这是一个学习和实践设计模式的项目。 设计模式...
- 包括策略模式(Strategy)、观察者模式(Observer)、责任链模式(Chain of Responsibility)、迭代器模式(Iterator)、命令模式(Command)等,它们关注对象之间的交互和职责分配。 设计模式不仅提供了标准化...
17. **责任链模式**(Chain of Responsibility) - **描述**:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。 - **示例**:处理用户请求的不同层级。 18. **命令模式**(Command) ...
本压缩包文件“c#设计模式源码例子”提供了一组C#实现的设计模式示例,通过分析这些源码,我们可以深入理解并掌握各种设计模式的精髓。 首先,我们来看看几种主要的设计模式类别:创建型、结构型和行为型模式。 1....
Java模式例子是一个深入探讨Java编程中设计模式应用的资源集合,它包含了一系列关于设计模式的实践示例。设计模式是软件工程中经过时间考验、在特定情境下解决常见问题的有效解决方案模板,它们代表了在软件设计过程...
#### 1.12 责任链模式(Chain of Responsibility) 责任链模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。 #### 1.13 命令模式(Command) 命令模式将一个请求封装为一个对象,从而...
行为型模式则关注对象间通信和职责分配,例如策略模式(Strategy)、观察者模式(Observer)和责任链模式(Chain of Responsibility)。 描述中的"部分例子"可能涵盖了这些设计模式的实际应用,例如: 1. **单例...
4. **Chain of Responsibility模式**(Chapter 17 CoR):CoR模式允许将多个处理者对象链接在一起,形成一个责任链。请求沿着链传递,直到某个处理者处理它。这种方式使得系统可以动态改变处理顺序,增加了灵活性。 ...
"链-能"(Chain-Able)是一种设计模式,它在前端开源库中广泛采用,尤其是在处理异步操作和数据流时。这个模式使得我们可以创建出流畅、可读性强的代码,通过链式调用来执行一系列操作。 链式调用的核心思想是返回...
### C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式) #### 概述 在本篇文章中,我们将深入探讨C#中的Chain of Responsibility(职责链)模式,这是行为型设计模式的一种。虽然标题...
在“击鼓传花”的例子中,每个参与者都是链上的一个节点,当鼓声停止时,持有花束的参与者需要执行酒令,这就是责任链模式的体现。在这个模式中: 1. **抽象处理者(Handler)角色**:定义了一个处理请求的接口,...
15. **责任链模式(Chain of Responsibility)**:避免将处理逻辑硬编码在对象中,而是让对象组成一条链,请求沿链传递,直到被某个对象处理。 16. **策略模式(Strategy)**:定义一系列算法,并将每一个算法封装...