设计模式之动态代理

代理实现可以分为静态代理和动态代理, 下面使用jdk和cglib来分别说明。

静态代理

具体实现:

public interface Subject {
    void request();
}

class RealSubject implements Subject {
    public void request(){
        System.out.println("Call RealSubject");
    }
}

class Proxy implements Subject {
    private Subject subject;

    public Proxy(Subject subject) {
        this.subject = subject;
    }

    public void request() {
        System.out.println("begin");
        subject.request();
        System.out.println("end");
    }
}

public class ProxyTest {

    public static void main(String args[]) {
        RealSubject subject = new RealSubject();
        Proxy p = new Proxy(subject);
        p.request();
    }
}
[阅读全文]

设计模式之单例模式

单例模式 (Singleton) 也叫单态模式,是设计模式中最为简单的一种模式。

第一种(懒汉, 线程不安全)

public class Singleton {

    private static Singleton instance;

    private Singleton() {
    }

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

这种写法 lazy loading 很明显, 但是致命的是在多线程不能正常工作。

[阅读全文]