Java设计模式——代理模式——专业代办 便捷可靠

1. 代理的意思

代理就是代替别人处理,在面向对象里面就是一个对象代替另一个对象做事。那肯定是做的一个事,比如代替另一个对象去买菜,代替去排队。

代理对象和被代理对象都得能做这件事,怎么保证这一点,都实现一个接口就可以了。因为实现接口的对象必须实现接口定义的方法,这样就保证了代理对象是有能力做这件事的。

2. 一个完美的代理模式场景——代驾

喝酒不开车这个道理都懂,但是开车到了场合实在是想喝酒咋办,没事,叫代驾。

先分析这个场景有几种元素:

1、首先得有车,没车叫啥代驾

2、得有个喝醉酒的司机,当然这个司机得有驾照,得能开车

3、得有个代驾,代驾负责将车开回家。

3. 实现

先来辆车

package org.demo.proxy;
/**
 * 汽车
 */
public class Car {
	private String carName;//汽车名字
	public String getCarName() {
		return carName;
	}
	public void setCarName(String carName) {
		this.carName = carName;
	}
	
}	

然后保证能开车的资格,实际上就是司机认证

package org.demo.proxy;
/**
 * 代理接口-表示拥有驾驶者资格-喝酒的司机和代驾都拥有驾驶者资格
 */
public interface IDriver {
	/**
	 * 开车
	 */
	void driveCar();
}

如果没代驾,司机自己开车很危险

package org.demo.proxy;
/**
 * 喝酒的司机
 */
public class DrinkedDriver implements IDriver{
	/**
	 * 私有轿车
	 */
	private Car car;
	public DrinkedDriver(Car car) {
		this.car=car;
	}
	
	@Override
	public void driveCar() {
		System.out.println("DrinkedDriver的"+car.getCarName()+"在行驶");
	}
	
	public static void main(String[] args) {
		//在这个故事里有一辆车
		Car car=new Car();
		//车的名字是奔驰
		car.setCarName("奔驰");
		//有一个喝了酒的司机,开奔驰,这是违法行为
		DrinkedDriver dDriver=new DrinkedDriver(car);
		dDriver.driveCar();
		
	}
}

叫了代驾,安全回家

package org.demo.proxy;

/**
 * 代驾
 * 
 * @author easypanda
 */
public class ProxyDriver implements IDriver {// 代驾必须得有驾照,不然怎么代理别人开车?
	/**
	 * 代驾不需要有车,代驾有代理对象——醉酒司机
	 */
	private DrinkedDriver dDriver;

	/**
	 * 每次开始业务的时候还是需要先找到客户的车
	 */
	public ProxyDriver(Car car) {
		this.dDriver = new DrinkedDriver(car);// 现在代驾知道了客户和客户的车,可以把客户放车上,代驾坐驾驶位
	}

	@Override
	public void driveCar() {
		System.out.println("代驾接管车钥匙");
		dDriver.driveCar();
		System.out.println("代驾安全将客户送至家中");
	}

	public static void main(String[] args) {
		// 在这个故事里有一辆车
		Car car = new Car();
		// 车的名字是奔驰
		car.setCarName("奔驰");
		// 有一个代驾找到了喝酒司机的车
		ProxyDriver pDriver=new ProxyDriver(car);
		pDriver.driveCar();
	}
}


如有问题请扫码联系我
在这里插入图片描述

已标记关键词 清除标记
课程简介: 历经半个多月的时间,Debug亲自撸的 “企业员工角色权限管理平台” 终于完成了。正如字面意思,本课程讲解的是一个真正意义上的、企业级的项目实战,主要介绍了企业级应用系统中后端应用权限的管理,其中主要涵盖了六大核心业务模块、十几张数据库表。 其中的核心业务模块主要包括用户模块、部门模块、岗位模块、角色模块、菜单模块和系统日志模块;与此同时,Debug还亲自撸了额外的附属模块,包括字典管理模块、商品分类模块以及考勤管理模块等等,主要是为了更好地巩固相应的技术栈以及企业应用系统业务模块的开发流程! 核心技术栈列表: 值得介绍的是,本课程在技术栈层面涵盖了前端和后端的大部分常用技术,包括Spring Boot、Spring MVC、Mybatis、Mybatis-Plus、Shiro(身份认证与资源授权跟会话等等)、Spring AOP、防止XSS攻击、防止SQL注入攻击、过滤器Filter、验证码Kaptcha、热部署插件Devtools、POI、Vue、LayUI、ElementUI、JQuery、HTML、Bootstrap、Freemarker、一键打包部署运行工具Wagon等等,如下图所示: 课程内容与收益: 总的来说,本课程是一门具有很强实践性质的“项目实战”课程,即“企业应用员工角色权限管理平台”,主要介绍了当前企业级应用系统中员工、部门、岗位、角色、权限、菜单以及其他实体模块的管理;其中,还重点讲解了如何基于Shiro的资源授权实现员工-角色-操作权限、员工-角色-数据权限的管理;在课程的最后,还介绍了如何实现一键打包上传部署运行项目等等。如下图所示为本权限管理平台的数据库设计图: 以下为项目整体的运行效果截图: 值得一提的是,在本课程中,Debug也向各位小伙伴介绍了如何在企业级应用系统业务模块的开发中,前端到后端再到数据库,最后再到服务器的上线部署运行等流程,如下图所示:
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页