1. 程式人生 > >SSM-Spring-08:Spring的靜態代理初窺案例

SSM-Spring-08:Spring的靜態代理初窺案例

ssp unit text app OS create 創建 test BE

------------吾亦無他,唯手熟爾,謙卑若愚,好學若饑-------------

靜態代理

  java的設計模式的代理模式,就是靜態代理

  寫在前面的話,靜態代理的優點和缺點

    優點:可以在不改變一個類的方法下,對這個類的方法進行增強

    缺點:靜態代理需要創建物理文件,在想實現多個靜態代理的操作,就需要好多的物理文件,不太優良

實現案例:

  Subject接口:抽象主題的接口,有一個方法

package cn.dawn.day08proxy;

/**
 * Created by Dawn on 2018/3/6.
 */
public interface
Subject { public void request(); }

  RealSubject類:真實主題的類,實現上面的Subject接口,實現他的方法

package cn.dawn.day08proxy;


/**
 * Created by Dawn on 2018/3/6.
 */
public class RealSubject implements Subject {
    public void request() {
        System.out.println("request本身——————————————————————————————-");
    }
}

  ProxySubject類:代理主題的類,同樣實現Subject接口,裏面有個Subject的接口的實例對象,他的get/set方法,還有新的方法,對真實主題進行靜態的增強

package cn.dawn.day08proxy;

/**
 * Created by Dawn on 2018/3/6.
 */
public class ProxySubject implements Subject {
    Subject subject;
    public void request() {
        System.out.println("before");
        subject.request();
        System.
out.println("after"); } public Subject getSubject() { return subject; } public void setSubject(Subject subject) { this.subject = subject; } }

  單測方法:

package cn.dawn.day08proxy;


import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Created by Dawn on 2018/3/3.
 */
public class test20180306 {


    @Test
    /*di註解註入*/
    public void t01(){
        Subject realSubject=new RealSubject();

        ProxySubject proxySubject=new ProxySubject();
        proxySubject.setSubject(realSubject);
        proxySubject.request();

        //realSubject.request();
    }
}

SSM-Spring-08:Spring的靜態代理初窺案例