【设计模式】代理模式 ( 静态代理 )
生活随笔
收集整理的這篇文章主要介紹了
【设计模式】代理模式 ( 静态代理 )
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 一、靜態(tài)代理代碼示例
- 1、訂單類
- 2、Service 接口
- 3、Service 實現(xiàn)類
- 4、Service 靜態(tài)代理類
- 5、Dao 接口
- 6、Dao 實現(xiàn)類
- 7、測試類
一、靜態(tài)代理代碼示例
業(yè)務場景 : 保存訂單信息 , 在 Service 層處理訂單保存 , 在 Dao 層將訂單存儲到數(shù)據(jù)庫 ; 使用靜態(tài)代理類加強 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 數(shù)據(jù)庫生效行數(shù)* @return*/int saveOrder(Order order); }
3、Service 實現(xiàn)類
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 靜態(tài)代理類
package proxy;/*** 訂單服務靜態(tài)代理類*/ 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;}/*** 在被代理對象方法之前執(zhí)行的內(nèi)容*/private void beforeMethod() {System.out.println("靜態(tài)代理 OrderServiceStaticProxy 執(zhí)行 saveOrder 之前");}/*** 在被代理對象方法之后執(zhí)行的內(nèi)容*/private void afterMethod() {System.out.println("靜態(tài)代理 OrderServiceStaticProxy 執(zhí)行 saveOrder 之后");} }
5、Dao 接口
package proxy;/*** 數(shù)據(jù)庫接口*/ public interface IOrderDao {/*** 向數(shù)據(jù)庫中插入訂單信息* @param order* @return*/int insert(Order order); }
6、Dao 實現(xiàn)類
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);} }
執(zhí)行結果 :
Service 層插入 Order 訂單信息成功 Dao 層插入 Order 訂單信息成功靜態(tài)代理 OrderServiceStaticProxy 執(zhí)行 saveOrder 之前 Service 層插入 Order 訂單信息成功 Dao 層插入 Order 訂單信息成功 靜態(tài)代理 OrderServiceStaticProxy 執(zhí)行 saveOrder 之后總結
以上是生活随笔為你收集整理的【设计模式】代理模式 ( 静态代理 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【设计模式】模板方法模式 ( 简介 |
- 下一篇: 【设计模式】代理模式 ( 动态代理 )