静的プロキシとは何ですか?
購買担当、弁護士、仲介人など、日常生活のエージェントは非常に一般的です。これらすべてに共通するのは、エージェントが前後に何かを扱うのを助けることです。エージェントは、自分がやりたいことの一部に集中するだけで済みます。
Javaのエージェントも同様です。エージェントモデルは、エージェントがいくつかの事前準備を完了して後で作業するのに役立ちますが、コアビジネスロジックは引き続きエージェントによって完了されます。
ケースワン
レンタル
1.インターフェース
//租房
public interface Rent {
public void rent();
}
2.実際のキャラクター
//房东
public class Host implements Rent {
public void rent(){
System.out.println("房东出租房子!");
}
}
3.エージェントの役割
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.顧客アクセス
public class Client {
public static void main(String[] args) {
//房东出租房子
Host host = new Host();
//代理,中介帮房东租房子,但是代理角色一般会有一些附属操作!
Proxy proxy = new Proxy(host);
proxy.rent();
}
}
事例2
1.インターフェイス
public interface UserService{
void add();
void delete();
void update();
void query();
}
2.実際のキャラクター
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.エージェントの役割
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.クライアントアクセス
public class Client {
public static void main(String[] args) {
UserServiceImpl userService = new UserServiceImpl();
UserServiceProxy proxy = new UserServiceProxy();
proxy.setUserService(userService);
proxy.query();
}
}
要約:
プロキシモデルの利点:
- 一部の公共事業に注意を払う必要なく、実際のキャラクターの操作をより純粋にすることができます
- 公衆は代理人の役割に引き渡され、事業の分割を実現します
- 公共サービス拡大時の便利な集中管理
プロキシモードの欠点:
- 実際の役割はエージェントの役割を生み出し、コードの量は2倍になり、開発効率は低下します