Java设计模式

工厂模式

class DesignMode_Factory {
    public static void main(String[] args){
        Product_Model p=Factory_Creator.getInstance();
        p.common_property();
    }    
}
/**
 * 产品模型,提取产品的共性方法——抽象化
 */
interface Product_Model{
    public abstract void common_property();
}
/**
 *具体产品的实现细节,不同产品不同实现,通过重写产品模型的抽象方法 
 *Concrete_Product1,Concrete_Product2,...
 ***/
class Concrete_Product implements Product_Model{
    public void common_property(){
        System.out.println("Concrete_product");
    }
}
// class Concrete_Product2 implements Product_Model{}

/**
 * 模式核心,生成具体的产品实例 (实际应用时含有商业逻辑和判断逻辑)
 * **/
class Factory_Creator{
    public static Product_Model getInstance(){
        Product_Model p=null;
        p=new Concrete_Product(); //只需调用接口创建对象,不用知道产品的具体实现细节
        return p;
    }
}

工厂模式主要是为创建对象提供一个过渡接口,以便将创建过程的具体过程隐藏隔离起来,达到提供灵活性的目的。

工厂模式具体分类 参考 http://www.cnblogs.com/forlina/archive/2011/06/21/2086114.html 

J2EE的DAO

DAO:Data Access Object 数据访问接口
DAO模式是标准的J2EE设计模式之一。将底层的数据访问操作和上层的业务逻辑分开。
一个典型的DAO实现包括以下组件:
  1)一个DAO工厂类
  2)一个DAO接口
  3)一个实现DAO接口的具体类
  4)数据传递对象(有时也称值对象)
具体的DAO类包含了从特定的数据源访问数据的逻辑。在下面的这段中你将学到设计和实现数据访问对象的技术。
事务划分:
  关于DAO要记住的一件重要事情是它们是事务性对象。每个被DAO执行的操作(对象创建,更新、或删除数据)都是和事务相关联的。
  同样的,事务划分(transaction demarcation)的概念是特别重要的。
 

代理模式 proxy

通俗讲,就是类似房屋中介、火车票代售点之类的角色(根据面向对象的特点,由此看出其存在的合理性)
实际程序是通过接口实现的
实现逻辑:需要被代理的对象(用户)和一个代理对象(火车票代售点),共同的接口(火车票),通过代理对象来实现具体的目标(买票)
/** 
 * 共同接口:抽象的对象
 * user和proxy要实现接口和接口的方法
 * */
interface AbstractObject{
    public abstract void abstractMethod();
}

class User implements AbstractObject{
    public void abstractMethod(){
        System.out.println("Do what you really want to do if the proxy has passed...");
    }
}

class Proxy implements AbstractObject{
    private AbstractObject ao;
    Proxy(AbstractObject ao){
        this.ao=ao;
    }
    public void abstractMethod(){
        checkName();
        this.ao.abstractMethod();
    }
    private void AddMethod(){ //Added different methods, or you can do in the abstractMethod() directly
        System.out.println("Do what you want the proxy to do...(Always check to pass)");
    }
}
class DesignMode_Proxy {
    public static void main(String[] args){
        AbstractObject ao=new Proxy(new User());
        ao.abstractMethod();
/**
 * 传递User对象来创建Proxy的对象,因此AbstractObject接口引用的是User对象 
* AbstractObject ao指向Proxy对象,而Proxy中的 AbstractObject ao 又指向实际的User对象 * 首先调用Proxy的方法,然后调用User的方法进真正的业务处理 *
*/ } }
代理模式  
代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。
在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
代理模式一般涉及到的角色有:
抽象角色:声明真实对象和代理对象的共同接口;
代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象
同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装
真实角色:代理角色所代表的真实对象,是我们最终要引用的对象

    
原文地址:https://www.cnblogs.com/20120810bubu/p/3080064.html