一、DAO模式
DAO:data access object,数据访问对象,不论数据存储在普通的文本文件、CSV文件、关系数据库(rdbms)、ldap,使用DAO模式访问数据的客户端代码可以完全忽视这种差异,而以统一的接口来访问相应数据。
eg:action—>ucc—>service—>DAO.
此外,异常一般在dao、service抛出,ucc进行捕捉异常(如果捕捉到,则抛出new RollbackException()进行事物回滚),ucc层继续抛出,action捕捉
二、适配器模式
接口A中有很多方法,如果CLASS B 继承该接口,那么B需要实现接口中的所有方法,但是当不想实现所有方法的时候,这个时候可以用抽象类C implements 接口A,再用B继承C,起到适配的效果。
eg:



三、单例模式
保证在程序中,一个类只有一个实例存在,通过final static 修饰对象实现
eg:
class Single{
private Single(){}
private static final Single s1=new Single();
四、工厂模式(又叫:静态工厂模式)
通过静态方法,用来实例化 目标类,达到就算新增方法,也不需要去修改过多代码的目标。eg:
class Factory{
public static Car getCarInstance(String type){
Car c=null;
c=(Car)Class.forName("org.jzkangta.factorydemo03."+type).newInstance();
.........
五、静态代理模式和动态代理模式(eg:rmi)
http://www.zhihu.com/question/20794107
http://blog.csdn.net/myfmyfmyfmyf/article/details/8229807
https://blog.csdn.net/wangyy130/article/details/48828595
当使用动态代理模式的时候,当服务端增加方法后,不需要去修改代理对象中的代码,通过invoke即可以动态实现方法调用
六、模板方法模式
思路:接口或抽象类中定义抽象方法及定义一般方法,在一般方法中调用具体的抽象方法的实现。(父类调用子类的方法).
八、策略模式
Calc c=new Calc();
//c.add.oper(a, b);
c.jian.oper(a, b);
public class Calc {
public final static Operation add=new Add();
public final static Operation jian=new Jian();
public final static Operation cheng=new Cheng();
public final static Operation chu=new Chu();
..............


九、观察者模式(spring可以实现,谷歌的com.google.common.eventbus也可以实现)
ApplicationContext中的事件处理是通过ApplicationEvent类和ApplicationListener接口来提供的,通过ApplicationContext的publishEvent()方法发布到ApplicationListener;
在这里包含三个角色:被发布的事件,事件的监听者和事件发布者。
事件发布者在发布事件的时候通知事件的监听者。
下面我们围绕这三个角色进行分析:
首先是被发布的事件:在Spring中,这个角色继承了ApplicationEvent类。
再看监听者,监听者实现了ApplicationListener接口。
而事件的发布者则实现了ApplicationContextAware接口,并调用publishEvent方法发布事件。在这里,事件将作为参数传递到这个方法中。
十:适配器模式(java.io的实际应用)
https://blog.csdn.net/laoniuer/article/details/83194460
https://www.cnblogs.com/jiqing9006/p/5962431.html
十一:职责链模式
https://blog.csdn.net/maoyuanming0806/article/details/80183494
















