标签:业务 bsp 收费 ack 操作 ble 模式 list string
代理模式的分类:
静态代理
接口
//租房
public interface Rent {
public void rent();
}
真实角色
//房东
public class Host implements Rent {
public void rent(){
System.out.println("房东要出租房子!");
}
}
代理角色 通过组合的方式 将房东带进来
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("收取中介费用");
}
}
客户端访问
public class Client {
public static void main(String[] args) {
//房东要租房子
Host host = new Host();
//代理,中介帮房东租房子,但是呢?代理角色一般会有一些附属操作!
Proxy proxy = new Proxy(host);
proxy.rent();
}
}
代理模式的好处:
可以使真实角色的操作更加纯粹!不用去关注一些公共的业务
公共也就交给代理角色!实现了业务的分工!
公共业务发生扩展的时候,方便集中管理!
缺点:
一个真实角色就会产生一个代理角色,代码量会翻倍,开发效率会变低
package com.kuang.demo02; public interface UserService { public void add(); public void delete(); public void update(); public void query(); }
package com.kuang.demo02; //真实对象 public class UserServiceImpl implements UserService { @Override public void add() { System.out.println("增加了一个用户!"); } @Override public void delete() { System.out.println("删除了一个用户!"); } @Override public void update() { System.out.println("修改了一个用户!"); } @Override public void query() { System.out.println("查询了一个用户!"); } }
package com.kuang.demo02; import java.security.PublicKey; 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("[debug]使用了"+"方法!"); } }
package com.kuang.demo02; public class Client { public static void main(String[] args) { UserServiceImpl userService = new UserServiceImpl(); UserServiceProxy proxy =new UserServiceProxy(); proxy.setUserService(userService); proxy.add(); } }
标签:业务 bsp 收费 ack 操作 ble 模式 list string
原文地址:https://www.cnblogs.com/yppaopao/p/13171383.html