【设计模式】代理模式 ( 静态代理 )
生活随笔
收集整理的這篇文章主要介紹了
【设计模式】代理模式 ( 静态代理 )
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、靜態代理代碼示例
- 1、訂單類
- 2、Service 接口
- 3、Service 實現類
- 4、Service 靜態代理類
- 5、Dao 接口
- 6、Dao 實現類
- 7、測試類
一、靜態代理代碼示例
業務場景 : 保存訂單信息 , 在 Service 層處理訂單保存 , 在 Dao 層將訂單存儲到數據庫 ; 使用靜態代理類加強 Service 層的功能 ;
1、訂單類
package proxy;/*** 訂單類* 存儲訂單時 , 通過 Service 層通接收 Order 對象進行處理*/ public class Order {/*** 訂單信息*/private Object orderInfo;/*** 用戶 ID*/private Integer userId;public Order(Object orderInfo, Integer userId) {this.orderInfo = orderInfo;this.userId = userId;}public Object getOrderInfo() {return orderInfo;}public void setOrderInfo(Object orderInfo) {this.orderInfo = orderInfo;}public Integer getUserId() {return userId;}public void setUserId(Integer userId) {this.userId = userId;} }
2、Service 接口
package proxy;/*** 服務接口*/ public interface IOrderService {/*** 保存訂單* @param order 數據庫生效行數* @return*/int saveOrder(Order order); }
3、Service 實現類
package proxy;public class OrderServiceImpl implements IOrderService {private IOrderDao iOrderDao;public OrderServiceImpl(IOrderDao iOrderDao) {this.iOrderDao = iOrderDao;}@Overridepublic int saveOrder(Order order) {System.out.println("Service 層插入 Order 訂單信息成功");return this.iOrderDao.insert(order);} }
4、Service 靜態代理類
package proxy;/*** 訂單服務靜態代理類*/ public class OrderServiceStaticProxy {private IOrderService iOrderService;public OrderServiceStaticProxy(IOrderService iOrderService) {this.iOrderService = iOrderService;}public int saveOrder(Order order){beforeMethod();int result = iOrderService.saveOrder(order);afterMethod();return result;}/*** 在被代理對象方法之前執行的內容*/private void beforeMethod() {System.out.println("靜態代理 OrderServiceStaticProxy 執行 saveOrder 之前");}/*** 在被代理對象方法之后執行的內容*/private void afterMethod() {System.out.println("靜態代理 OrderServiceStaticProxy 執行 saveOrder 之后");} }
5、Dao 接口
package proxy;/*** 數據庫接口*/ public interface IOrderDao {/*** 向數據庫中插入訂單信息* @param order* @return*/int insert(Order order); }
6、Dao 實現類
package proxy;public class OrderDaoImpl implements IOrderDao {@Overridepublic int insert(Order order) {System.out.println("Dao 層插入 Order 訂單信息成功");return 1;} }
7、測試類
package proxy;public class Main {public static void main(String[] args) {Order order = new Order("書籍訂單", 1);IOrderDao dao = new OrderDaoImpl();IOrderService service = new OrderServiceImpl(dao);// 不使用代理的情況service.saveOrder(order);System.out.println();// 使用代理的情況OrderServiceStaticProxy proxy = new OrderServiceStaticProxy(service);proxy.saveOrder(order);} }
執行結果 :
Service 層插入 Order 訂單信息成功 Dao 層插入 Order 訂單信息成功靜態代理 OrderServiceStaticProxy 執行 saveOrder 之前 Service 層插入 Order 訂單信息成功 Dao 層插入 Order 訂單信息成功 靜態代理 OrderServiceStaticProxy 執行 saveOrder 之后總結
以上是生活随笔為你收集整理的【设计模式】代理模式 ( 静态代理 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【设计模式】模板方法模式 ( 简介 |
- 下一篇: 【设计模式】代理模式 ( 动态代理 )