• JAVA静态代理模式(从现实生活角度理解代码原理)


    代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。

    代理模式说白了就是“真实对象”的代表,在访问对象时引入一定程度的间接性,因为这种间接性可以附加多种用途。

    在这实现代码之前,先讲一个简单的生活故事,我们都知道我们周边有很多公司有房屋买卖或租赁的业务,比如链家(LianJia),但链家本身是不存在任何实际房屋资产的,他所售卖租赁的房屋均需要房屋产权所有人(HomeMaster)提供,才得以实现公司的房源需求;同时公司要的卖房租房业务均需要公司员工(Seller)来实现,但员工要实现该方法,必须经过公司授权以及动用公司的业务资源渠道才可以完成任务。故事讲到这里,我们应该清楚这里的Seller其实就是代理模式中静态代理了,那么我们开始该模式的代码书写(这里省略了代理实现方法前后的业务逻辑):

     1 interface LianJia{//LianJia提供房屋买卖的渠道方法(公司业务)
     2     public void sellHouse();
     3 }
     4 class HomeMaster implements LianJia{//房主需要通过链家卖房(实现公司的业务渠道)
     5     public void sellHouse(){
     6         System.out.println("我有套房子要卖");
     7     }
     8 }
     9 class Seller implements LianJia{//链家的业务需要Seller实现
    10     private LianJia lj;//声明链家公司(可理解为必须证明该seller是链家的),方便调用方法
    11     public Seller(LianJia lj){
    12         this.lj = lj;
    13     }
    14     public void sellHouse(){
    15         lj.sellHouse();//实际实现方式需要调用公司的业务渠道方法
    16     }
    17 }
    18 public class ProxyMode{
    19     public static void main(String[] args){
    20         HomeMaster hm = new HomeMaster();
    21         Seller s = new Seller(hm);//代理代房主实现卖房需求
    22         s.sellHouse();
    23     }
    24 }
  • 相关阅读:
    jacascript 立即执行函数(IIFE)与闭包
    javascript 作用域链与执行环境
    高并发、海量数据处理尽量少使用using也能提升效率
    清理0字节文件和文件夹
    一个朋友面试时遇到的算法题(怎么组合后得到最大整数)
    避免回溯方法
    Linq 查询结果 可能遵循 2 º,2¹,2 ²,......增长计算
    复杂 XML 的 序列化 反序列化
    小米4年600亿背后的10条创业经验
    经典String str = new String("abc")内存分配问题
  • 原文地址:https://www.cnblogs.com/panhouye/p/6091079.html
Copyright © 2020-2023  润新知