Qu'est-ce qu'un proxy statique?
Les agents dans la vie sont très courants, comme les achats, les avocats, les intermédiaires, etc. Ils ont tous une chose en commun: aider l'agent à gérer certaines choses avant et après. L'agent n'a qu'à se concentrer sur la partie de la chose qu'il veut faire.
L'agent en Java est similaire. Le modèle d'agent peut aider l'agent à effectuer certaines préparations préliminaires et des travaux ultérieurs, mais la logique métier principale est toujours terminée par l'agent.
Premier cas
Location
1. Interface
//租房
public interface Rent {
public void rent();
}
2. De vrais personnages
//房东
public class Host implements Rent {
public void rent(){
System.out.println("房东出租房子!");
}
}
3. Rôle de l'agent
public class Proxy implements Rent {
private Host host;
public Proxy() {
}
public Proxy(Host host) {
this.host = host;
}
public void rent(){
seeHouse();
host.rent();
hetong();
fee();
}
//看房
public void seeHouse(){
System.out.println("中介带你看房");
}
//签合同
public void hetong(){
System.out.println("签合同");
}
//收费
public void fee(){
System.out.println("收取中介费用");
}
}
4. Accès client
public class Client {
public static void main(String[] args) {
//房东出租房子
Host host = new Host();
//代理,中介帮房东租房子,但是代理角色一般会有一些附属操作!
Proxy proxy = new Proxy(host);
proxy.rent();
}
}
Cas 2
1. Interface
public interface UserService{
void add();
void delete();
void update();
void query();
}
2. De vrais personnages
public class UserServiceImpl implements UserService {
public void add() {
System.out.println("增加一个用户");
}
public void delete() {
System.out.println("删除一个用户");
}
public void update() {
System.out.println("修改一个用户");
}
public void query() {
System.out.println("查询一个用户");
}
}
3. Rôle de l'agent
public class UserServiceProxy implements UserService {
private UserServiceImpl userService;
public void setUserService(UserServiceImpl userService) {
this.userService = userService;
}
@Override
public void add() {
log("add");
userService.add();
}
@Override
public void delete() {
log("delete");
userService.delete();
}
@Override
public void update() {
log("update");
userService.update();
}
@Override
public void query() {
log("query");
userService.query();
}
//日志方法
public void log(String msg) {
System.out.println("使用了" + msg + "方法");
}
}
4. Accès client
public class Client {
public static void main(String[] args) {
UserServiceImpl userService = new UserServiceImpl();
UserServiceProxy proxy = new UserServiceProxy();
proxy.setUserService(userService);
proxy.query();
}
}
Résumé:
Les avantages du modèle proxy:
- Peut rendre le fonctionnement de vrais personnages plus pur, sans avoir à prêter attention à certaines affaires publiques
- Le public sera remis au rôle d'agent, réalisant la division des affaires
- Gestion centralisée pratique lorsque les services publics sont étendus
Inconvénients du mode proxy:
- Un vrai rôle produira un rôle d'agent, la quantité de code doublera et l'efficacité du développement diminuera