使用代理模式來給交易模塊添加緩存功能
阿新 • • 發佈:2018-06-27
update .get 實現接口 pri 一個 main 構造 aps vat
這篇文章裏面,我們通過給交易模塊模擬一個緩存功能,來記錄代理模式的使用過程:
- 靜態代理
靜態代理主要是通過實現接口來完成,類圖結構如下:
這種方式比較簡單,代理類和業務類都實現同一個接口,代理類中重寫一個入參類型和接口保持一致的構造函數,並在接口的實現方法中實現代理功能,具體代碼我們通過改造訂單模塊來演示:
//新建一個ICahe接口,讓IOrder接口繼承ICache接口 public interface ICache { public void cacheData(); }
改造OrderService類,主要是實現cacheData方法:
//訂單的實現類 public class OrderService implements IOrder { private static OrderEntity cacheOrder = null; @Override public List<OrderEntity> findOrder(OrderEntity orderCondition) { return null; } @Override public List<OrderEntity> updateOrder(OrderEntity order) { return null;} @Override public OrderEntity addOrder(OrderEntity order) { System.out.println("創建了一個訂單:"+order.getOrderId()); cacheOrder = order; return null; } @Override public void cacheData() { System.out.println("緩存了一個訂單:"+cacheOrder.getOrderId()); } }
編寫CahceProxy類,主要用來實現代理:
View Code編寫測試類,我們已經把緩存Order的這個操作交給了Poxy來實現,這樣當我們需要給其他業務模塊添加緩存功能的時候,就可以不用處理緩存的事務,全部交給代理類來完成
class StaticProxy { public static void main(String[] args) { OrderEntity order = new OrderEntity(); order.setOrderId("1000"); IOrder orderService = new OrderService(); orderService.addOrder(order); ICache cacheProxy = new CacheProxy(orderService); cacheProxy.cacheData(); } }
- 動態代理
- cglib代理
使用代理模式來給交易模塊添加緩存功能