java 设计模式--代理模式心得1(静态代理)

代理模式心得

1 简述

  代理模式,通俗的来讲代理模式就是我们生活中常见的中介,为一个对象在不改变原有需求的情况下增强其功能

2 示例

2.1 需求说明

  比如我们需要找房子,先生成租房核心操作接口类

/**
    * 抽象租房的核心操作接口类
    */
interface RentalHouse {
    /**
    * 提供租房需求
    */
  public void rentalHouse();
}

实现该接口

class RentalHouseImpl implements RentalHouse {
  public void rentalHouse(){
   System.out.println("我租房"); 
  }
}

主程序

/**
    * 主程序
    */
public class TestRun {
  public static void main(String args[]){
    RentalHouse rh = new RentalHouseImpl();
    rh.rentalHouse();
  }
}

********执行结果*******
我租房

2.2 问题发现

  如果按照这个方式的话, 也仅仅是你个人在找房子而已,能力不强

3 改造

  比如我们需要找房子,我们自己找能力有限, 也就催生出一类公司, 房屋中介,他代为找房, 公司能力更强更广, 能更好更快的为你找合适的房子,你们共同的核心需求就是找房,同时中介在找房的基础上提供了更多功能,也就是代理主题实现

/**
    * 租房中介
    */
class RentalHouseProxy implements RentalHouse {

    private RentalHouse rentalHouse;

    public RentalHouseProxy(final RentalHouse rentalHouse) {
        this.rentalHouse = rentalHouse;
    }
        
    private void ready(){
            System.out.println("租房前准备,查找公司数据库资源");
    }
    
    @Override
    public void rentalHouse() {
        ready();
        rentalHouse.rentalHouse();
        complete();
    }
    
    private void complete(){
      System.out.println("租房后卫生打扫,家具修理");
    }
}

主程序

/**
    * 主程序
    */
public class TestRun {
  public static void main(String args[]){
        // 提供真实需求
    RentalHouse rh = new RentalHouseImpl();
    // 通过中介找房,将需求告诉中介
    RentalHouseProxy proxy = new RentalHouseProxy(rh);
    //中介帮你租房
    proxy.rentalHouse();
  }
}

********执行结果*******
租房前准备,查找公司数据库资源
我租房
租房后卫生打扫,家具修理

4 结果总结

  看以上的代码就能得出, 中介不仅能提供找房子功能, 还能做到提前在自己的数据库中查找, 提高找房速度效率, 并且在租房后提供卫生的打扫工作, 家具修理, 功能更强, 比你自己找房还要轻松, 服务更好.

你可能感兴趣的:(java 设计模式--代理模式心得1(静态代理))