一、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:

模式_第1张图片

image.png

image.png

三、单例模式

保证在程序中,一个类只有一个实例存在,通过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();

..............

模式_第2张图片

image.png

九、观察者模式(spring可以实现,谷歌的com.google.common.eventbus也可以实现)

ApplicationContext中的事件处理是通过ApplicationEvent类和ApplicationListener接口来提供的,通过ApplicationContextpublishEvent()方法发布到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