• Java中静态代理


    最近我一直想搞清楚Java中的代理问题。一直都只是听说,还没有真正领教。
    于是我就在网上找了一下,说得不是很明白,然后我又在视频里找了一下,有一个叫兄弟连的视频给了介绍,虽然那些风格我不是很喜欢,不过也算是说得明明白白。我同学说马士兵讲得不错,因为看了这个视频,也就不想再找了。
    视频里是举了一个形象的例子: 一个妹子请媒婆来给她找一个如意郎君。而这里的媒婆就是我们所说的那个代理类。代理模式是为其它对象提供一种代理以控制对这个对象的访问。说白了,就是说代理类挡在了被代理类前面为被代理类提供一个筛选的功能。这里的媒婆就是起到了这一层筛选的作用。媒婆可按妹子提供的条件为妹子挑选如意郎君,条件成立后,让妹子(被代理人)去相亲。
    如下:
    ProxyDemo.java
    public class ProxyDemo {
    	
    	public static void main(String[] args) {
    		Person p = new Person("张三");
    		Matchmaker mm = new Matchmaker(p);
    		mm.miai();
    	}
    }
    Subject.java
    public interface Subject {
    	public void miai();
    }


    Matchmaker.java
    
    public class Matchmaker implements Subject{
    
    	private Subject subject; // 要代理的目标对象
    	private boolean flag; // 是否满足条件标记
    	
    	public Matchmaker(Subject subject) {
    		this.subject = subject;
    	}
    	
    	public void befor(int condition) {
    		System.out.println("媒人正在为代理人挑选如意郎君 . . .");
    		if(condition >=165 && condition <=180) { // person给出的筛选条件
    			System.out.println("已找到合适的人选");
    			flag = true; // 设置满足条件标记为真
    		}else{
    			System.out.println("未找到合适的人选");
    			flag = false; // 设置满足条件标记为真
    		}
    	}
    	
    	public void after() {
    		if(flag) System.out.println("本次相亲圆满结束。");
    		else System.out.println("本次相亲未成功。");
    	}
    	
    	@Override
    	public void miai() {
    		befor(170); // 传一个身高为170cm的参数
    		if(flag) subject.miai();
    		after();
    	}
    }
    


    Person.java
    public class Person implements Subject {
    
    	private String name;
    	public Person(String name) {
    		this.name = name;		
    	}
    
    	@Override
    	public void miai() {
    		System.out.println(name + "正在相亲中。。。");
    	}
    
    }
    


    这里的代理人和被代理人都得实现相亲这个主题的接口,因为代理人和被代理人是因为相亲这件事才有代理人与被代理人的这层关系。
  • 相关阅读:
    一种通用的简易缓存设计方案
    SpringCloud接入Passport中台服务的FeignClient简易集成配置
    一种基于P2P技术的高效数据传输方式
    应用多环境部署和Redis高可用
    瑞金小吃
    前(单页面)后端完全分离的OAuth2授权和分享
    Session(数据)共享的前后端分离Shiro实战
    10万Http(单机和集群Server)Subscribe的可行性实验和压测
    2018年你应该了解的前端新技术
    js常见问题总结归纳
  • 原文地址:https://www.cnblogs.com/fengju/p/6336182.html
Copyright © 2020-2023  润新知