zoukankan      html  css  js  c++  java
  • 002设计模式 -- 代理模式

    1.uml

    2.抽象角色: 通过接口或抽象类声明真实角色实现的业务方法

    1 public interface Person {
    2     void sleep();
    3 
    4     void eat();
    5 }

    3.真实角色: 实现抽象角色, 定义真实角色所要实现的业务逻辑, 供代理角色调用

     1 public class Students implements Person {
     2     @Override
     3     public void sleep() {
     4         System.out.println("Students -- sleep");
     5     }
     6 
     7     @Override
     8     public void eat() {
     9         System.out.println("Students -- eat");
    10     }
    11 }
     1 public class Teacher implements Person {
     2     @Override
     3     public void sleep() {
     4         System.out.println("Teacher -- sleep");
     5     }
     6 
     7     @Override
     8     public void eat() {
     9         System.out.println("Teacher -- sleep");
    10     }
    11 }

    4.代理角色: 实现抽象角色, 是真实角色的代理, 通过真实角色的业务逻辑方法来实现抽象方法, 并可以附加自己的操作

     1 public class ProxyTest implements Person {
     2     private Person person;
     3 
     4     ProxyTest(Person person) {
     5         this.person = person;
     6     }
     7 
     8     @Override
     9     public void sleep() {
    10         this.person.sleep();
    11     }
    12 
    13     @Override
    14     public void eat() {
    15         this.person.eat();
    16     }
    17 }

    5.测试

     1 public class Test {
     2     public static void main(String[] args) {
     3         ProxyTest proxyTest;
     4         proxyTest = new ProxyTest(new Students());
     5         proxyTest.eat();
     6         proxyTest.sleep();
     7         System.out.println("==================================================");
     8         proxyTest = new ProxyTest(new Teacher());
     9         proxyTest.eat();
    10         proxyTest.sleep();
    11     }
    12 }

    6.结果

    7.总结

    7.1:优点

      >. 职责清晰: 真实的角色就是实现实际的业务逻辑, 不用关心其他非本职责的事务, 通过后期的代理完成一件完成事务, 附带的结果就是编程简洁清晰
      >. 代理对象可以在客户端和目标对象之间起到中介的作用, 这样起到了中介的作用和保护了目标对象的作用
      >. 高扩展性
  • 相关阅读:
    mysql数据库
    Mysql之sql语句操作
    mysql修改root密码的多种方法
    kvm虚拟化
    清华AIOps算法:KPI聚类
    有点扯的预测方法
    内网安全运营的逻辑体系架构
    SpringBoot定时消费Kafka消息
    kafka的consumer消费能力很低的情况下的处理方案
    Kafka_Kafka 消费者 偏移量 与 积压 查询脚本 kafka-consumer-groups.sh
  • 原文地址:https://www.cnblogs.com/yanwu0527/p/8573490.html
Copyright © 2011-2022 走看看