静态代理模式
- 真实对象和代理对象要实现同一个接口
- 代理对象要代理真实角色
优点:
- 代理对象可以做很多真实对象做不了的事情
- 真实对象专注做自己的事情
例:买票
public class TicketBuyer implements ITicketPurchase{
@Override
public void buyTicket() {
System.out.println("已经买到票了!");
}
public static void main(String[] args) {
BuyTicket buyTicket = new BuyTicket(new TicketBuyer());
buyTicket.buyTicket();
}
}
//购票
interface ITicketPurchase{
void buyTicket();
}
//购票站
class BuyTicket implements ITicketPurchase{
private TicketBuyer ticketBuyer;
public BuyTicket(TicketBuyer ticketBuyer) {
this.ticketBuyer = ticketBuyer;
}
//真实的代理对象
@Override
public void buyTicket() {
before();
this.ticketBuyer.buyTicket();
after();
}
//购票之前
private void before() {
System.out.println("查询是否有票...");
System.out.println("提交购票申请...");
System.out.println("付钱...");
System.out.println("出票...");
}
//完成购票之后
private void after() {
System.out.println("打印发票,提供给购票者!");
}
}