- 浏览: 30544 次
- 性别:
- 来自: 西安
最新评论
文章列表
引言:
在Sping中,一般使用<bean>这样的元素来配置一个bean,Spring在创建容器的时候会扫描这些配置,根据配置创建对象存放于容器中,然后我们再从容器中取出,或者在配置其他bean的时候作为属性注入。使用bean配置的一个限制是我们必须遵循配置文件的XML Schema定义,这在大多数情况下不会出现问题。但是在一些情况下,我们希望实现更为灵活的bean配置。Spring为此提供了 Custom tag Support,也称为Extensible XMLAuthoring。通过这个拓展点,我们可以灵活定制自己需要的配置格式。
例如,如果我们使用了责任链设计应用程序 ...
- 2014-08-23 02:36
- 浏览 342
- 评论(0)
Servlet规范定义了一个API标准,这一标准的实现通常称为Servlet容器,比如开源的Tomcat、JBoss。容器提供一些基本的服务,使得开发者专注于业务领域。当一个请求到达时,监听在相应端口的容器会接受该请求,将请求的信息转化成一个ServletRequest对象,同时创建一个ServletResponse对象,我们在开发Servlet应用时,就可以直接使用这两个对象(容器传递到service()方法的参数)。因此,所谓容器(服务器、中间件等),就是提供一些底层的、业务无关的基本功能,为真正的Servlet提供服务。
例如,在Http请求到达的时候,请求是一个标准的Http请求,包括 ...
- 2014-08-02 17:49
- 浏览 313
- 评论(0)
MVC模式将代码分为三个部分:模型、视图、控制器。其中,模型定义数据以及对数据的操作接口。视图用于展示模型中的数据给用户,同时相应用户的操作,将用户的操作传递给控制器,控制器根据用户的操作执行相应的业务逻辑,访问或修改模型数据,同时控制器可以根据操作更新视图。另外,数据模型的更新可以通过观察者模式通知视图或者控制器。典型的MVC模式如下图,它们之间的交互通过方法调用或者事件模型来完成:
在Apple公司的Cocoa框架中,模型不直接与视图进行交互,它们之间的交互都通过控制器来传递,因而实现模型和控制器的解耦。此时,控制器同时监听数据模型和视图界面,根据它们的变化实现相应的逻辑控制。即: ...
- 2014-06-20 21:36
- 浏览 369
- 评论(0)
MVC模式对于用户界面的开发有着重要的意义,在Java中,不是按照标准的MVC模式实现的,而是将控制器和视图结合起来,而模型独立存在。模型成为观察者模式中的被观察对象,而控制器和视图则作为观察者。
下面是一个改自《重构》的例子,如下图所示:三个输入框之间的关系为start+length=end。 修改其中的任何一个输入框,都要保持这个关系恒成立。如果将数据模型和GUI界面、事件处理全部混在一个类,一样可以实现这个功能,但是代码将十分难懂,也难以维护和拓展。因此将数据模型独立出来。
首先定义数据模型类,数据模型提供接口操作,用于查询、修改或者其他更复杂的数据操作,供用户调用,代码如 ...
- 2014-06-20 14:42
- 浏览 279
- 评论(0)
命令模式将命令或者请求封装成一个对象,使用时,我们将命令传递给命令的调用者,命令的调用者对于命令如何执行一无所知,只需调用命令的方法来完成命令。命令锁操作的对象(命令接收者)与命令调用者完全分开。其结构图如下:
命令接口定义提供哪些命令,在具体的命令子类中,实现具体的命令操作,具体子类持有命令作用对象,也就是命令接收者的引用。用户类将命令接收者作为构造函数的参数传递给命令对象,创建命令对象这话将命令传递给命令的调用者。
例如,我们有一个按钮类Button,按钮可以支持多种不同的命令,如OnCommand定义打开命令,NextCommand定义下一集命令,MuteCommand定义静音命令 ...
- 2014-06-20 10:09
- 浏览 396
- 评论(0)
许多情况下,在一个对象中完成某项任务存在有多种不同的策略。例如,有一个类Sorter对数组进行排序,排序的策略有很多种,实现不同策略排序的一种解决方案是通过类来继承。例如:public class Sorter {
public List<Object> sort(List<Object> listTobeSorted) {
List<Object> sortedList = null;
// do sort
return sortedList;
}
}
public class SorterA extends Sorter {
publ ...
- 2014-06-19 22:51
- 浏览 299
- 评论(0)
一个简单的服务器实现,采用Java语言。
/**
*
*/
package iotest.serversocket;
import java.io.File;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @author Brandon B. Lin
*
*/
public class JHTTP extends Thread {
private File documentRootDirectory;
private String ind ...
- 2014-06-19 12:38
- 浏览 439
- 评论(0)
/**
*
*/
package iotest.serversocket;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.uti ...
- 2014-06-18 22:49
- 浏览 415
- 评论(0)
/**
*
*/
package iotest.serversocket;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncod ...
- 2014-06-18 19:39
- 浏览 321
- 评论(0)
装饰模式顾名思义,就是添加一些额外的功能(装饰)。装饰是为了更加美观、更具艺术性,而基本的的操作不应该在装饰类中完成。装饰模式使得我们可以动态地为对象增加一些功能,而无需事先在类中定义。
装饰模式结构图如下:
下面是摘自《设计模式》的一个例子,稍微做了修改:
先给出类图:
下面是代码:
/**
* @author Brandon B. Lin
*
*/
public abstract class VisualComponent {
/* 绘制图形 */
public abstract void draw();
/* 调整大小 */
p ...
- 2014-06-08 12:50
- 浏览 376
- 评论(0)
1. 并发:进程与线程
关于并发,一个最直观的例子就是你可以同时听歌还能上网,能用Word。即使在同一个程序中,也可能要同时完成多个任务,比如音乐播放器,你一边听着一首歌,另一边还同时下载其他歌曲,你还想改变一 ...
- 2014-06-06 16:21
- 浏览 365
- 评论(0)
Java对文件磁盘、网络连接、内存缓存等输入输出采用统一的抽象实体进行处理,这种抽象就是流。流通过Java的I/O系统连接到物理设备,而所有流采用相同的方式工作。
1. I/O流
I/O流代表输入源或者输出目标,流可以表示很广泛的输入源或者输出目标,包括磁盘文件、外部设备、其他程序、网络连接(socket)等。另一方面,流支持许多种不同的数据,比如简单的字节、基本的数据类型、本地化字符、对象等。有些流简单传送数据,而其他一些流进行更多的操作和转换。I/O流能够处理的数据从简单的基本类型到复杂的对象。Java中所有I/O流可以分为两大类:字节流和字符流。
1.1 字节流(byte str ...
- 2014-06-02 23:22
- 浏览 311
- 评论(0)
注解(Annotation)是对程序的一种描述和说明,可以理解为是程序的元数据(metadata),它对被注解的代码没有直接的影响,但是我们可以通过反射机制获取注解,然后让处理这些注解称为程序的一部分。本文介绍注解的基本内容 ...
- 2014-06-02 15:19
- 浏览 341
- 评论(0)
异常处理机制是Java许多特性的重要基础。Java采用面向对象的方式来处理异常。本文介绍与异常相关的内容。
1. 什么是异常?
异常是异常事件(exceptional event)的简写,是程序运行过程中出现的打断(disrupt)正常运行的事件,比如被除数为0导致的程序异常。当程序的方法出现异常时,方法就会创建一个描述该异常的对象,将这个异常对象传递给运行时系统(runtime system)。这个对象叫做异常对象,它包含描述异常的信息、异常类型、出现异常是程序的状态等等。创建异常对象并将其交给运行时系统就叫做抛出异常。
我们知道,方法的调用是一环扣着一环的,来自相同或者不同对象的方法调 ...
- 2014-06-01 05:07
- 浏览 380
- 评论(0)
Java访问权限控制机制用于控制类、方法、域等Java元素的使用权限。Java语言通过多层次的访问权限控制,实现对访问权限的精确的控制。如果把方法和域看做是服务的话,那么不同的访问权限就像不同的服务级别一样,有普通服务、会员服务、钻石VIP服务等等,每种服务的级别是不一样的。那么,Java是如何实现访问权限控制的呢?
主要通过包机制、访问控制符(modifier)这两种机制来实现。包不仅是一种命名机制,也是一种权限控制机制,而访问控制符有多个层次,从来访问控制符到构造器访问控制符、方法控制符、域控制符等。通过多个层次,实现精准控制。由于域一般都设为private,因此本文在类成员的访问控制 ...
- 2014-05-31 21:56
- 浏览 284
- 评论(0)