码迷,mamicode.com
首页 > 其他好文 > 详细

002设计模式 -- 代理模式

时间:2018-03-15 15:17:33      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:保护   抽象方法   扩展性   target   static   person   span   nts   业务   

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:优点

  >. 职责清晰: 真实的角色就是实现实际的业务逻辑, 不用关心其他非本职责的事务, 通过后期的代理完成一件完成事务, 附带的结果就是编程简洁清晰
  >. 代理对象可以在客户端和目标对象之间起到中介的作用, 这样起到了中介的作用和保护了目标对象的作用
  >. 高扩展性

 

002设计模式 -- 代理模式

标签:保护   抽象方法   扩展性   target   static   person   span   nts   业务   

原文地址:https://www.cnblogs.com/yanwu0527/p/8573490.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!