博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模式5. 代理模式-Java
阅读量:4034 次
发布时间:2019-05-24

本文共 1765 字,大约阅读时间需要 5 分钟。

代理模式

1.定义:

为其他对象提供一种代理,以控制对这个对象的访问。

代理类和被代理类实现相同的功能,所以实现相同的接口。

在这里插入图片描述

2.以一个场景模拟代理类的应用

李大头喜欢公主,但是不好意思说出来,就让好友戴笠代替自己去给公主送礼物。这里李大头就是被被代理类,戴笠就是代理类。

在这里插入图片描述

(1)接口类

package com.proxy;//总的接口public interface GiveGift {
public void giveDolls(); public void giveFlowers(); public void giveChocolate();}

(2)真实被代理类

package com.proxy;//真正的追求者public class Pursiut implements GiveGift {
Girl girl; public Pursiut(Girl girl) {
this.girl = girl; } @Override public void giveDolls() {
System.out.println(girl.getName()+"送你洋娃娃"); } @Override public void giveFlowers() {
System.out.println(girl.getName()+"送你鲜花"); } @Override public void giveChocolate() {
System.out.println(girl.getName()+"送你巧克力"); }}

(3)代理类

package com.proxy;  //代理类public class Proxy implements  GiveGift{
Pursiut pursiut; public Proxy(Girl girl) {
this.pursiut=new Pursiut(girl); } @Override public void giveDolls() {
pursiut.giveDolls(); } @Override public void giveFlowers() {
pursiut.giveFlowers(); } @Override public void giveChocolate() {
pursiut.giveChocolate(); }}

(3) 交互对象

package com.proxy;public class Girl {
String name; public Girl(String name) {
this.name = name; } public String getName() {
return name; } public void setName(String name) {
this.name = name; }}

(4)客户端类

package com.proxy;public class Client {
public static void main(String[] args) {
Girl girl=new Girl("公主"); //公主,被追求者; Proxy proxy=new Proxy(girl); proxy.giveDolls(); proxy.giveChocolate(); proxy.giveFlowers(); }}

(5)运行测试

公主送你洋娃娃公主送你巧克力公主送你鲜花

转载地址:http://upfdi.baihongyu.com/

你可能感兴趣的文章
WAV文件解析
查看>>
DAC输出音乐2-解决pu pu 声
查看>>
WPF中PATH使用AI导出SVG的方法
查看>>
WPF UI&控件免费开源库
查看>>
QT打开项目提示no valid settings file could be found
查看>>
Win10+VS+ESP32环境搭建
查看>>
Ubuntu+win10远程桌面
查看>>
flutter-实现圆角带边框的view(android无效)
查看>>
android 代码实现圆角
查看>>
flutter-解析json
查看>>
android中shader的使用
查看>>
java LinkedList与ArrayList迭代器遍历和for遍历对比
查看>>
drat中构造方法
查看>>
JavaScript的一些基础-数据类型
查看>>
JavaScript基础知识(2)
查看>>
转载一个webview开车指南以及实际项目中的使用
查看>>
android中对于非属性动画的整理
查看>>
一个简单的TabLayout的使用
查看>>
ReactNative使用Redux例子
查看>>
Promise的基本使用
查看>>