標籤:通過 cee str unit static jar pom.xml nts 實現
? 著作權聲明:本文為博主原創文章,轉載請註明出處
定義:
- 為其他對象提供一種代理以控制對這個對象的訪問
組成:
抽象角色:通過介面或抽象類別聲明真正角色實現的業務方法
真實角色:實現抽象角色,定義真實角色所要實現的商務邏輯,供代理角色調用
代理角色:實現抽象角色,是真實角色的代理,通過真實角色的商務邏輯方法來實現抽象方法,並可以附加自己的操作
執行個體:
1.項目結構
2.pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion><groupId>org.proxy</groupId><artifactId>StaticProxy</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies></project>
3.Hello.java
package org.proxy.StaticProxy;/** * 介面-抽象角色 * */public interface Hello {void say(String name);}
4.HelloImpl.java
package org.proxy.StaticProxy;/** * 實作類別-真實角色 * */public class HelloImpl implements Hello {public void say(String name) {System.out.println("Hello!" + name);}}
5.HelloProxy.java
package org.proxy.StaticProxy;/** * 代理角色 * */public class HelloProxy implements Hello {private Hello hello;public HelloProxy() {hello = new HelloImpl();}public void say(String name) {before();hello.say(name);after();}private void before() {System.out.println("Before");}private void after() {System.out.println("After");}}
6.TestStaticProxy.java
package org.proxy.test;import org.junit.Test;import org.proxy.StaticProxy.Hello;import org.proxy.StaticProxy.HelloProxy;public class TestStaticProxy { @Testpublic void TestHello() {Hello helloProxy = new HelloProxy();helloProxy.say("Jack");}}
7.效果預覽
參考:《架構探險-從零開始寫Java Web架構》(黃勇著)
java之靜態代理