• 静态代理模式代码演示


    一、静态代理:增强行为
    1、真实角色
    2、代理角色+真实角色的引用
    3、代理行为
    要求实现相同的接口

    1、接口,租赁行为

     1 package com.wisezone.dailies;
     2 
     3 /**
     4  * 接口,租赁行为
     5  * @author 王东海
     6  * @2017年4月16日
     7  */
     8 public interface Rent
     9 {
    10     /**
    11      * 租赁
    12      * void
    13      */
    14     public void rent();
    15 }

    2、真实角色类

     1 package com.wisezone.dailies;
     2 
     3 /**
     4  * 真实角色类
     5  * @author 王东海
     6  * @2017年4月16日
     7  */
     8 public class You implements Rent
     9 {
    10 
    11     @Override
    12     public void rent()
    13     {
    14         System.out.println("收取房租,过过包租婆的日子");
    15     }
    16 
    17 }

    3、代理角色类

     1 package com.wisezone.dailies;
     2 
     3 /**
     4  * 代理角色类
     5  * 要有增强行为
     6  * 并且具有真实角色
     7  * @author 王东海
     8  * @2017年4月16日
     9  */
    10 public class Proxy implements Rent
    11 {
    12 
    13     private You you;
    14     
    15     
    16     public Proxy(You you)
    17     {
    18         this.you = you;
    19     }
    20 
    21     //1.前期增强
    22     public void before(){
    23         System.out.println("寻找租房客户...");
    24         
    25     }
    26     
    27     //2.后期行为
    28     public void after(){
    29         System.out.println("收取中介费....");
    30         
    31     }
    32 
    33     @Override
    34     public void rent()
    35     {
    36         before();
    37         you.rent();//真实角色的行为
    38         after();
    39     }
    40 
    41 }

    4、测试结果

     1 package com.wisezone.dailies;
     2 
     3 public class TestProxy
     4 {
     5     public static void main(String[] args)
     6     {
     7         You you = new You();
     8         Proxy proxy = new Proxy(you);
     9         proxy.rent();
    10     }
    11 }

    打印:

    寻找租房客户...
    收取房租,过过包租婆的日子
    收取中介费....

  • 相关阅读:
    Hibernate学习一----------Hibernate初实现
    Error executing DDL via JDBC Statement
    org.hibernate.MappingException:Unknown entity
    Struts2学习九----------处理结果类型(input)
    触发器-MySQL
    Struts2学习八----------接收参数
    Struts2学习七----------Struts2后缀
    Struts2学习六----------默认Action
    Struts2学习五----------指定多个配置文件
    Java 8 表示两个时间点距离
  • 原文地址:https://www.cnblogs.com/wdh1995/p/6719386.html
Copyright © 2020-2023  润新知