/**
* Flyweight接口:享元对象的抽象基类或者接口
* Created by max on 2016/4/13.
*/publicinterfaceTicket {/**
* 我们的业务就是查询车票结果
* @param bunk
*/publicvoidshowTicketInfo(String bunk);
}
/**
* 具体的享元对象:
* Created by max on 2016/4/13.
*/publicclassTrainTicketimplementsTicket{public String from; //始发地public String to; //目的地public String bunk; //铺位publicint price;
publicTrainTicket(String from, String to) {
this.from = from;
this.to = to;
}
@OverridepublicvoidshowTicketInfo(String bunk) {
//通过构造函数,传递from,to生成查询结果,具体就不写了
}
}
/**
* 享元工厂,负责管理享元对象池和创建享元对象.
* Created by max on 2016/4/13.
*/publicclassTicketFactory {static Map<String,TrainTicket> sTicketMap = new HashMap<>();
publicstatic Ticket getTicket(String from,String to){
String key = from + "-" + to;
if (sTicketMap.containsKey(key)){
return sTicketMap.get(key);
}else{
Ticket ticket = new TrainTicket(from,to);
sTicketMap.put(key, (TrainTicket) ticket);
return ticket;
}
}
}
/**
* 客户端调用,使用缓存池,避免生成大量的对象
* Created by max on 2016/4/13.
*/publicclassClient {publicstaticvoidmain(String[] args){
Ticket ticket = TicketFactory.getTicket("深圳","成都");
ticket.showTicketInfo("上下铺");
}
}