23种设计模式之代理模式傻瓜式理解

代理模式

静态代理

在这里插入图片描述
在这里插入图片描述

代码

	package 静态代理模式;
	
	//设计一个接口,表明大家都在围绕着这个事在转
	//规定一个方法,大家都要干的事
	interface 买房 {
	    void buyHosue();
	 }
	
	//确定被代理的对象,以及要干什么事
	class 老王 implements 买房 {
	
	 @Override
		   public void buyHosue() {
	      System.out.println("我要买房");
		   }
	 }
	//创建一级代理,负责查看是否有买房资格
	class 房产局 implements 买房 {
	
		 private 买房 buyHouse;
	
		 public 房产局 ( 买房  buyHouse) {
			         this.buyHouse = buyHouse;
			   }
		 @Override
	 public void buyHosue() {
		  
	     buyHouse.buyHosue();//老王要干啥?
		      System.out.println("验资,是否有购房资格");
		      }
		 }
	//创建一级代理,负责查看是否有贷款能力
	class 银行 implements 买房 {
	
		 private 买房 buyHouse;
	
		 public 银行 ( 买房  buyHouse) {
			         this.buyHouse = buyHouse;
			   }
		 @Override
	public void buyHosue() {
		  
	          buyHouse.buyHosue();//老王要干啥?
		      System.out.println("查银行流水");
		      }
		 }
	
	//创建二级代理,不仅跑房产局查购房资格,跑银行查贷款能力
	//还带你看房。
	class 中介  implements 买房{
		 private 买房 银行;
		 private 买房 房产局;
	
		 public 中介 (买房  银行, 买房  房产局) {
			         this.银行 = 银行;
			         this.房产局 = 房产局;
			   }
		 @Override
	public void buyHosue() {
			 房产局.buyHosue();
			 银行.buyHosue();
		      System.out.println("看房,买房");
		      }
		 }
	
	
	
	public class 静态代理测试 {
	
		public static void main(String[] args) {
			// 找一个中介帮老王买房,中介在找房产局和银行验资
	        买房 buyHouse = new 中介(new 房产局(new 老王()),new 银行(new 老王()));
	        buyHouse.buyHosue();//中介全权处理
		}
	
	}

问题1:老王为什么不直接买房,还要用代理?
答1:模块化分工,银行机构专门处理贷款相关的实物,房产局
负责资格验证,中介帮你跑银行和房产局。也用买房这个接口规定各个机构要处理的问题,用多态,表示大家都在围绕着买房这件事在做。当然本文的案例没有涉及到具体验证过程,比方说满足某种条件才能贷款,才能买房等等。

猜你喜欢

转载自blog.csdn.net/bolanlanlan/article/details/86009856