设计模式之代理模式
来源:互联网 发布:数据库表主键的作用 编辑:程序博客网 时间:2024/05/01 21:23
前言:
代理模式是为其他对象提供一种代理可以控制对这个对象的访问。
一.代理模式的简介
代理其实就是真实对象的代表。让其他对象间接访问对象,在这间接访问的过程中,可以附加上其他操作。
二.代理模式的实现
案例:房屋的销售代理,替买房者跟卖房者交易,完成买房操作。
1. UML类图:
2. 卖房者实体类:
package com.pattern.Proxy.bean;/** * 卖家实体类 * @author 葫芦娃 * */public class Seller { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; }}
3.买房接口类:
买房者类和代理类都要继承于该接口,这样才能使得买家的所有操作,代理类都可以替代其完成。
package com.pattern.Proxy.service;/** * 买房接口 * * @author 葫芦娃 * */public interface IBuyHouse { // 付钱 public void giveMoney(); // 过户 public void transfer();}
4. 买房者实体类
买房者只需要知道卖家是谁,所以通过构造方法,引入Seller卖家实体类。然后实现IBuyHouse接口的买房操作。
package com.pattern.Proxy.impl;import com.pattern.Proxy.bean.Seller;import com.pattern.Proxy.service.IBuyHouse;public class Purchaser implements IBuyHouse { //引入卖方对象 private Seller seller; public Purchaser(Seller seller) { this.seller = seller; } @Override public void giveMoney() { System.out.println("买家付费给卖家:" + seller.getName()); } @Override public void transfer() { System.out.println("卖家" + seller.getName() + "将房产证过户给买家"); }}
5. 代理类
代理类需要知道买卖双方是谁,所以代理类也要通过构造方法引入Seller对象,代替购买者完成购房一系列操作。
package com.pattern.Proxy.impl;import com.pattern.Proxy.bean.Seller;import com.pattern.Proxy.service.IBuyHouse;import com.pattern.Proxy.impl.Purchaser;public class SellProxy implements IBuyHouse { // 被代理买方对象,用以访问实体 private Purchaser purchaser; // 代理构造方法,控制买方和卖房的关联 public SellProxy(Seller seller) { this.purchaser = new Purchaser(seller); } @Override public void giveMoney() { purchaser.giveMoney(); } @Override public void transfer() { purchaser.transfer(); }}
6. 客户端类:
只需要代理和卖房者进行交易操作即可,实现对买房者的隐藏。
package com.pattern.Proxy.client;import com.pattern.Proxy.bean.Seller;import com.pattern.Proxy.impl.SellProxy;public class Client { public static void main(String[] args) { //卖方对象 Seller seller = new Seller(); seller.setName("王健林"); //代理对象 SellProxy sProxy = new SellProxy(seller); //代理执行一系列交易操作 sProxy.giveMoney(); sProxy.transfer(); } }
7.执行结果:
买家付费给卖家:王健林卖家王健林将房产证过户给买家
三.代理模式的应用:
- 远程代理:为不在同一地址的对象提供局部代理,这样可以隐藏这个对象存在与不同空间的事实。
- 虚拟代理:在创建资源耗费大的对象时,通过代理来存放实例化时间过长的真实对象。如:网络图片没有加载出来时,显示的底图。
- 安全代理:用来控制真实对象的访问权限。当对象有不同的访问权限时,用代理来实现对不同权限的访问。
- 指引代理:调用真实对象时,代理处理另外一些事情。如:加锁机制,当访问一个对象的时,通过代理检索该对象是否被锁,都是通过代理完成的。
四.案例下载:点击下载
阅读全文
1 0
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之-代理模式
- 设计模式之 代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之-----代理模式
- 设计模式之代理模式
- 设计模式之-代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 提携别人,也是完善自己
- 自制操作系统
- 实习日报
- 利用tomcat创建虚拟的图片服务器
- thread wait notify
- 设计模式之代理模式
- 寻找第n个默尼森数
- windows用Chrome浏览器访问Centos7虚拟机中django项目执行结果
- FTPrep, 4 Median of Two Sorted Arrays
- Bootstrap学习心得
- ARC 059F バイナリハック DP
- [LeetCode] 328. Odd Even Linked List
- SMPCUP2017_linux_cmd
- 嵌入式系统入门及一些逻辑解析