当前位置:首页 > CN2资讯 > 正文内容

静态代理模式

3天前CN2资讯


1、对静态代理的理解:定义一个接口,真实角色和代理角色都实现统一接口,客户只和接口打交道[客户直接与代理角色打交道,真实角色对于客户来说是被代理角色隔离起来的,代理角色持有真实角色的引用,代理角色协助真实角色进行前置处理和后置处理,中间的核心业务调用真实角色来完成。使得真实角色处理的核心业务更加存粹,不再去关注一些公共的事情,公共业务由代理来完成,实现了业务的分工,公共业务发生改变时变得更加集中和方便]。

2、代码演示如下:


package com.tiger.proxy;
/**
* 明星接口,代理模式中,给代理角色和真实角色实现
* @author tiger
* @Date 2017年9月3日
*/
public interface Star {
/**
* 面谈
*/
void confer();
/**
* 签合同
*/
void signContact();
/**
* 订票
*/
void bookList();
/**
* 唱歌,核心业务
*/
void sing();
/**
* 收钱
*/
void collectMoney();
}
package com.tiger.proxy;
/**
* 代理角色
* @author tiger
* @Date 2017年9月3日
*/
public class ProxyStar implements Star {

//代理必须持有真实对象的引用
private Star star;
/**
* 默认代理的是邓紫棋
*/
public ProxyStar() {
this.star = new RealStar("邓紫棋");
}
/**
* 这里将来传入真角色(RealStar)
* @param star
*/
public ProxyStar(Star star) {
this.star = star;
}

@Override
public void confer() {
System.out.println("ProxyStar.confer()");
}

@Override
public void signContact() {
System.out.println("ProxyStar.signContact()");
}

@Override
public void bookList() {
System.out.println("ProxyStar.bookList()");
}
/**
* 这个核心业务的逻辑必须请真实角色来实现,代理没有能力自己去实现
*/
@Override
public void sing() {
star.sing();
}

@Override
public void collectMoney() {
System.out.println("ProxyStar.collectMoney()");
}
/**
* 执行里开演出会所需要的流程,给客户直接对接调用
*/
public void operator(){
confer();
signContact();
bookList();
sing();
collectMoney();
}
}
package com.tiger.proxy;
/**
* 真实角色,主要实现核心业务逻辑,作为歌手明星,主要逻辑是唱歌
* @author tiger
* @Date 2017年9月3日
*/
public class RealStar implements Star {
String name;
public RealStar(String name) {
this.name = name;
}
@Override
public void confer() {
System.out.println("RealStar.confer()");
}

@Override
public void signContact() {
System.out.println("RealStar.signContact()");
}

@Override
public void bookList() {
System.out.println("RealStar.bookList()");
}

@Override
public void sing() {
System.out.println(name + " 在倾情演唱!");
}

@Override
public void collectMoney() {
System.out.println("RealStar.collectMoney()");
}
}
package com.tiger.proxy;
/**
* 具有听歌需求的客户,只与顶层接口打交道
* 父类引用不能指向子类特有的方法
* @author tiger
* @Date 2017年9月3日
*/
public class Client {
public static void main(String[] args) {
//方式1
ProxyStar proxy1 = new ProxyStar(new RealStar("周杰伦"));
proxy1.operator();
System.out.println("--------------");
//方式2
Star proxy = new ProxyStar();
//方式3
// Star proxy = new ProxyStar(new RealStar("许嵩"));
proxy.confer();
proxy.signContact();
proxy.bookList();
proxy.sing();
proxy.collectMoney();
}
}





    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/24280.html

    分享给朋友:

    “静态代理模式” 的相关文章

    BT开心版:简化Linux服务器管理的最佳工具

    BT开心版是一个强大的Linux服务器管理工具,致力于简化网站的搭建、管理和维护过程。对于那些刚接触Linux操作系统的用户来说,BT开心版的出现无疑是一大福音。它的设计理念是让每个用户无论有多少技术背景,都能高效地管理自己的网页,不必深入学习Linux系统的复杂操作。 首先,我发现BT开心版的最大...

    轻云互联:助力企业数字化转型的云计算解决方案

    轻云互联是隶属于广州轻云网络科技有限公司的云计算服务提供商。自成立以来,轻云互联专注于云计算领域,提供一系列全方位的一体化解决方案。这些解决方案涵盖了云计算产品、租用托管服务、云服务器、裸金属服务器、云虚拟主机以及游戏云服务等。走进轻云互联,你会发现这里不仅是一个技术创新的平台,更是一个通过边缘计算...

    Host Winds:可再生能源的关键因素与未来发展潜力

    什么是 Host Winds? 在谈论可再生能源时,Host Winds 是一个不容忽视的概念。简单来说,Host Winds 指的就是那些发生在某一特定区域内的风速和风向。这些风的模式能够极大地影响一个地区的风力发电潜力。想象一下,如果你在一个风速稳定且方向一致的地区,那么利用这些风来发电就会更加...

    Rndc2的线路怎么样?全面评测RackNerd洛杉矶DC02机房

    Rndc2的基本线路信息 说到Rndc2的线路,首先让我跟大家分享一下它的基本信息。这个线路的核心在于RackNerd洛杉矶DC02机房,位置恰好在美国西海岸的洛杉矶。成立于2019年的RackNerd,以其价格优势著称,给我们提供了比较便宜的美国VPS选择,最低年付大约10美元,这对于很多希望节省...

    支付宝与PayPal充值攻略:如何选择适合的支付方式

    支付宝和PayPal是当今全球最受欢迎的支付平台之一,它们各自具有独特的特点和广泛的用户群体。支付宝成立于2004年,由阿里巴巴集团推出,最初是为了支持电子商务交易,逐渐发展成一个多功能的支付应用。用户不仅可以通过它进行在线支付,还可以进行转账、充值、理财等多种活动。随着移动支付的兴起,支付宝也积极...

    美国原生IP的优势和购买指南

    什么是美国原生IP 说到美国原生IP,首先要知道它是什么。原生IP(也称为本地IP)指的是通过互联网服务提供商(ISP)直接分配给用户的IP地址。这种IP地址通常代表了某个特定的地理位置。当我说“美国原生IP”时,实际上我是在提到那些位于美国本土的IP地址。这使得它们在访问某些当地内容或进行地域特定...