日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

静态代理设计模式

發布時間:2024/4/13 asp.net 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 静态代理设计模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

package com.learn.service;/*** user 服務層* @author Leon.Sun**/ public interface UserService {/*** 在add方法里面怎么進行處理呢* 這里是接口不能寫方法體的*/public void add(); } package com.learn.service.impl;import com.learn.service.UserService;//user 服務層 /*** 在這里寫一個實現出來* 實現一下UserService這個接口* @author Leon.Sun**/ public class UserServiceImpl implements UserService {/*** spring 事務封裝呢? aop技術* 實現完了之后講一下方法* Spring他是怎樣進行封裝的呢* Spring的事務是怎么封裝的呢* 他其實是采用AOP技術* 在方法之前和之后做個攔截* 在方法之前開啟事務* 在方法運行完畢之后就提交事務* 就是這樣的* 為了提高代碼的復用性* 我們把重復的代碼抽取出來* 放在代理類里去實現* 你看看我之前也講過的* 我們是不是要寫一個代碼類對象* */public void add() {System.out.println("開啟事務.....");/*** 打印日志* 就是往數據庫添加數據....* 在添加之前和之后要加一個事務處理* 但是如果以后每個方法都是這樣去開啟事務那就非常麻煩*/System.out.println("往數據庫添加數據...");System.out.println("提交事務.....");}} package com.learn.day02;import com.learn.service.UserService; import com.learn.service.impl.UserServiceImpl;public class Test001 {public static void main(String[] args) {/*** 我們有一個UserServiceImpl實現* 正常情況下我們new一個UserServiceImpl* 這邊是有一個接口UserService* */UserService userService = new UserServiceImpl();/*** 這個時候我們做一個調用* 就可以實現這樣的一個功能* 開啟事務* 當我往數據庫添加完了以后* 就可以提交事務* 這是最基本的*/userService.add(); // UserServiceProxy userServiceProxy = new UserServiceProxy(userService); // userServiceProxy.add();}}

package com.learn.service;/*** user 服務層* @author Leon.Sun**/ public interface UserService {/*** 在add方法里面怎么進行處理呢* 這里是接口不能寫方法體的*/public void add(); } package com.learn.service.impl;import com.learn.service.UserService;//user 服務層 /*** 在這里寫一個實現出來* 實現一下UserService這個接口* @author Leon.Sun**/ public class UserServiceImpl implements UserService {/*** spring 事務封裝呢? aop技術* 實現完了之后講一下方法* Spring他是怎樣進行封裝的呢* Spring的事務是怎么封裝的呢* 他其實是采用AOP技術* 在方法之前和之后做個攔截* 在方法之前開啟事務* 在方法運行完畢之后就提交事務* 就是這樣的* 為了提高代碼的復用性* 我們把重復的代碼抽取出來* 放在代理類里去實現* 你看看我之前也講過的* 我們是不是要寫一個代碼類對象* */public void add() { // System.out.println("開啟事務.....");/*** 打印日志* 就是往數據庫添加數據....* 在添加之前和之后要加一個事務處理* 但是如果以后每個方法都是這樣去開啟事務那就非常麻煩*/System.out.println("往數據庫添加數據..."); // System.out.println("提交事務.....");}} package com.learn.proxy;import com.learn.service.UserService;//靜態代理設計模式 /*** 代理類要么你去反射生成* 要么通過字節碼技術* @author Leon.Sun**/ public class UserServiceProxy {/*** 寫完了之后的時候*/private UserService userService;/*** 通過構造函數* 寫構造函數的時候* 傳入他需要代理的接口出來* 這個你們有沒有印象* 這個是我在很早就講過的* 有沒有印象我們在講字節碼技術的時候* 使用字節碼技術創建類* 有沒有印象* 我是不是講過一個例子* 創建一個類出來* 像AOP底層就是把這一層* 怎么做呢* 我不想去創建代理對象* 我們采用動態的* 我們人工創建代理對象的情況下* 他要要么通過反射機制* 要么通過字節碼技術* 創建一個虛擬的代理類對象* 就是這樣的* 只不過是內存里面我們線程看不到* 這個我就不細說* 這個原理我大體介紹一下* 有一部分人可能之前沒有學* 我之前講代理設計模式講的特別深* 把原理都扯出來了* 代理設計模式ASM是干嘛用的* 其實ASM就是做字節碼的新增修改* 他和動態代理有什么區別* 靜態代理是什么* 我會演示的* 動態代理是沒有代理類這一層的* 為什么你想想* 如果我這個時候有幾千個類需要代理* 那你是不是需要寫幾千個代理類對象* 這樣代碼寫的太復雜了* 我們需要一個動態的代理對象* 我們人為看不到* 通過虛擬技術生成出來* 一般是字節碼技術* 或者反射技術* 就是這樣的* 沒關系我待會給你演示* 靜態代理你理不理解* 我給你們總結一下* 動態代理馬上要講的* * * * @param userService*/public UserServiceProxy(UserService userService) {/*** 通過構造函數把它傳進來* */this.userService = userService;}/*** 我在代理類里面也實現一下* */public void add() {/*** 這里開啟事務*/System.out.println("靜態代理 開啟事務");userService.add();/*** 提交事務*/System.out.println("靜態代理 提交事務");}} package com.learn.day02;import com.learn.proxy.UserServiceProxy; import com.learn.service.UserService; import com.learn.service.impl.UserServiceImpl;/*** 這個其實就叫做靜態代理設計模式* 一般AOP里面不會用靜態代理設計模式* 每個類都需要寫代理類類對象* 這樣寫的話性能不會很好* 這樣寫的話代碼也會比較多* 不能復用* * @author Leon.Sun**/ public class Test001 {public static void main(String[] args) {/*** 我們有一個UserServiceImpl實現* 正常情況下我們new一個UserServiceImpl* 這邊是有一個接口UserService* */UserService userService = new UserServiceImpl();/*** 這個時候我們做一個調用* 就可以實現這樣的一個功能* 開啟事務* 當我往數據庫添加完了以后* 就可以提交事務* 這是最基本的*/ // userService.add();/*** 這個時候我們用的時候就不一樣了* 要這樣用了* new一下代理類對象UserServiceProxy* 把我們的service傳進去* 拿到了我們的代理類對象* */UserServiceProxy userServiceProxy = new UserServiceProxy(userService);/*** 然后通過代理類對象調用我們的方法* 然后會打印靜態代理開啟事務* 靜態代理提交事務* */userServiceProxy.add();}}

?

總結

以上是生活随笔為你收集整理的静态代理设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。