- 浏览: 406899 次
- 性别:
- 来自: 哈尔滨
最新评论
-
springdata_springmvc:
如何在java Web项目中开发WebService接口,地址 ...
JAVA6开发WebService (二)——JAX-WS例子 -
springdata-jpa:
如何在java Web项目中开发WebService接口,地址 ...
JAVA6开发WebService (三)——几个概念 -
springmvc-freemarker:
如何在java Web项目中开发WebService接口,地址 ...
JAVA6开发WebService (一) -
yuanfen2014:
[color=red][/color] 学习了
jdom解析xml -
di1984HIT:
我很喜欢你对设计模式的理解。
JAVA设计模式学习笔记5——模版方法模式(Template Method Pattern)
文章列表
各种资料对设计模式定义说法不一,也没有人给出一个像课本一样的定义,但核心思想是一致的,本文对于各种模式的定义部分摘自《HEAD FIRST设计模式》,部分摘自网络,还有一部分为自己理解,对于各种模式的理解,如有不正确的,欢迎批评指正。
目录:
1、策略模式
2、观察者模式
3、装饰模式
4、工厂模式
5、单例模式
策略模式——定义算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 策略模式是说,针对一种计算,定义一系列的算法,由用户决定具体使用哪一个算法完成计算。
比如,提供一个计算银行存款利率的接口,对于不 ...
命令模式(Command Pattern)——将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持科撤销的操作。
命令模式适用于“请求-响应”模式的功能,将用户的请求封装成对象(命令 ...
模版方法模式(Template Method Pattern)——定义一个操作中算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
模版方法模式适用于一组固定流程的算法,在抽象类中定义一组算法,由子类去实现,抽象类提供一个公开方法,确定调用这组算法的步骤。
比如,我们去营业厅办理一张手机卡,不论是移动、联通还是电信,流程都是先办卡、再选号,而办卡和选号的动作每个运营商自己去实现。
我们定义一个运营商的抽象类,有两个抽象的方法办卡和选号,还有一个方法就是提供服务,调用办卡和选号:
public ...
单例模式——确保一个类只有一个实例,并提供一个全局访问点。
单例模式一般分为懒汉式和恶汉式,懒汉式是说当第一次获取类时才进行类的实例化,饿汉式是说当类被加载时直接实例化。定义单例模式的一般步骤是:
* 定义一个私有的构造函数,以保证这个类不能被外部程序实例化; * 定义一个类的实例变量,以保存这个类的唯一实例; * 定义一个获取类唯一实例的静态方法,使外部程序可以获取这个类的唯一实例。
懒汉式:
public class Singleton {
private static Singleton uniqueInstance;
private ...
工厂模式(Factory Pattern)
工厂模式,顾名思义,实际上就是定义能够生成对象的工厂,对于某种对象,其实例化过程由对象工厂来完成。
工厂模式可细分为简单工厂模式(Simple Factory Pattern)、工厂方法模式(Factory Method Pattern)和抽象工厂模式(Abstract Factory Pattern)。
简单工厂模式(Simple Factory Pattern)——又称静态工厂方法模式(Static Factory Method Pattern),很简单,就是通过一个工厂类来负责对象的创建。
比 如,你要办一张联通的电 ...
装饰者模式——动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。
装饰者模式就是给一个对象动态的添加新的功能,装饰者和被装饰者实现同一个接口,装饰者持有被装饰者的实例。JAVA中IO就大量使用了装饰者模式,如:
InputStream in = new BufferedInputStream(new FileInputStream("test.txt"));
其 中FileInputStream、BufferedInputStream都实现了InputStream,BufferedInputStream就 是一个装饰者,增 ...
观察者模式——定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
观察者模式是说,当一个对象的状态发生改变的时候,关心这个对象的所有对象都会接到通知,并作出相应的反应。比如,公司的OA系统提供了消息订阅功能,当有新的消息产生时,所有订阅了该消息的员工都会接到通知,这就是观察者模式。
观察者模式的核心是一个主题接口,一个观察者接口,任何实现了主题接口的实现类都可以被观察者订阅(如会议通知、项目动态都可以被员工订阅),任何实现了观察者接口的实现类都可以订阅、或取消订阅一个主题(如中层员工订阅了会议通知、基础员工订阅了项目动态) ...
EJB两阶段提交事物传播问题
- 博客分类:
- 异常及解决
昨天改EJB程序时出现了一个bug,服务器报了一个transaction does not exist,研究了大半天,终于发现原来是因为我的两个事物同时修改一条记录,weblogic两阶段提交时产生的问题,先上代码(示例,不是真实那个啊):
第一 ...
破解
CKFinder是收费的,可是我们都比较穷,用不起那么昂贵的东西,所以只能即无奈又无耻的去破解了。在http://www.imobile365.com/acticles/reviews-and-news/12-others/4551-ckeditor33ckfinder20ckf.html看到个破解办法,试了一下,果然好用,不过作为一名程序员,感情很矛盾啊,国人的破解技术还是一流啊。
打开ckfinder.js文件
一、找到<h4 class='message_content'></h4>,改为<h4 style='display:n ...
CKFinder2.x 入门
- 博客分类:
- java 学习笔记
CKFinder是一款强大的基于浏览器的ajax文件管理工具,通常与CKEditor整合使用,当然也可以单独使用。CKFinder支持多种语言,官网地址为 http://ckfinder.com/
,目前他的java版已经发布,不过不同于CKEditor,CKFinder是收费的,如果不购买license,就只能用于学习演示,不能用于商业用途,除非......(你知道的)。
一、下载及安装
http://ckfinder.com/download
选择java版下载(我下载时是2011年5月30日发布的
...
linux下搭建配置APACHE+SVN
- 博客分类:
- svn
下载
1、apache
http://httpd.apache.org/
下载
httpd-2.2.19.tar.gz
2、svn
http://subversion.tigris.org/
http://svn.haxx.se/dev/archive-2010-06/0320.shtml
下载
http://subversion.tigris.org/downloads/subversion-1.6.12.tar.gz
http://subversion.tigris.org/downloads/subversion-deps ...
java 操作 Excel 最常用的就是JXL(java excel api)和POI,今先看下JXL吧。首先可以到 http://www.andykhan.com/jexcelapi/download.html
下载最新的jxl.jar,里面有它的jar包和API,内有一个小例子,可以参考一下。
JXL 用起来挺简单的,不过相应的其功能也并不是十分强大,对于一般的简单的excel操作还可以,对于太复杂的还是有些吃力,基本的操作也就是以下几项内容。
首先,要创建一个可读写的工作簿(WritableWorkbook):
WritableWorkbook ...
配置CKEditor
主要有三种方式配置CKEditor,可以在 CKEditor API
中CKEDITOR.config
部分查看所有可配置选项。
一、在页面中配置
在页面中进行配置是CKEditor官方推荐的方式,这样可以避免修改CKEditor原始的配置文 ...
有多种方法可以将CKEditor集成到你的页面中,下面是最通常的做法。
第一步:载入 CKEditor
http://ckeditor.com/download
下载ckeditor的最新版本(我下了个5月9号发布的3.6),解压后将 ckeditor 文件夹复制到web工程的根目录下。在要使用CKEditor的页面<head>块中插入以下代码,将其引入:
<head>
...
<script type="text/javascript" src="/ckeditor/ckeditor.js&qu ...
异常一:
警告: Error setting value
ognl.OgnlException: target is null for setProperty(null, "submit", [Ljava.lang.String;@13d7738)
at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:1651)
at ognl.ASTProperty.setValueBody(ASTProperty.java:101)
at ognl.SimpleNode.evaluateSetValueBody ...