小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
概述
简单了解就是,在原本可以直接操作的类中间放一层代理层
也就是原本一个类的功能,可以被另一个代理类来使用
实际例子
- 跳板机,通常一些线上的服务器不能直接访问,只能先登陆跳板机,再在跳板机上访问线上服务器
- 中介行为,买房子一般不会直接去找到房子而是通过中介来找房子
- windows的快捷方式
逻辑实现
- 有一个接口
Linux
- 两个实现
ServerLinux
(服务器)和JumpServerLinux
(跳板机) - clientDemo
clientDemo想要登陆服务器,需要登陆跳板机经过验证才能登陆服务器
代码实现
1、 创建基础linux服务器的接口
/**
* @ClassName Linux
* @Desc linux机器
* @Author YangMingYu
* @Date 2021/10/26 10:46 上午
* @Version 1.0
**/
public interface Linux {
public void play(String name,String password);
//...
}
2、 创建服务器
/**
* @ClassName ServerLinux
* @Desc 服务器
* @Author YangMingYu
* @Date 2021/10/26 10:46 上午
* @Version 1.0
**/
public class ServerLinux implements Linux {
public void readLog() {
//查看主机日志信息
System.out.println("readLog loading...");
//...
}
public void hostName() {
System.out.println("hostName: " + this.getClass().getName());
}
@Override
public void play(String name, String password) {
System.out.println("登陆服务器成功");
checkAuth(name, password);
hostName();
readLog();
}
public Boolean checkAuth(String name, String password) {
String reqIp = "10.0.0.1";
//校验跳转请求的ip是否允许访问
//再校验名称密码
// if (checkReqIp(reqIp)) {
//
// }
return Boolean.TRUE;
}
}
3、 创建跳板机
/**
* @ClassName JumpServerLinux
* @Desc 跳板机
* @Author YangMingYu
* @Date 2021/10/26 10:49 上午
* @Version 1.0
**/
public class JumpServerLinux implements Linux {
ServerLinux serverLinux;
@Override
public void play(String name, String password) {
if (checkAuth(name, password)) {
jumpToServer("root", "123456");
}
}
public Boolean checkAuth(String name, String password) {
if ("张三".equals(name) && "123".equals(password)) {
return true;
}
return false;
}
public void jumpToServer(String serverName, String serverPass) {
serverLinux = new ServerLinux();
serverLinux.play(serverName, serverPass);
}
}
4、访问服务器
/**
* @ClassName ClientDemo
* @Desc 客户端访问server
* @Author YangMingYu
* @Date 2021/10/26 10:59 上午
* @Version 1.0
**/
public class ClientDemo {
public static void main(String[] args) {
Linux linux = new JumpServerLinux();
linux.play("张三", "123");
}
}
总结
一般代理商都是在中间做一些使其“简洁”或“增强”的功能
跳板机的概念就是
- client只有登陆跳板机的账号密码
- 服务器只能允许跳板机的网段访问
- 隔离、增强功能的实现