享元模式,剛好現(xiàn)在共享單車火,拿來(lái)開(kāi)刀

享元模式UML.png
interface ShareBike{
void ride();
}
抽象共享單車
class ShareBikeOFO implements ShareBike{
public void ride(){
//小黃車駕到
}
}
天朝小黃車
class ShareBikeMoBai implements ShareBike{
public void ride(){
//摩拜單車
}
}
50斤的摩拜單車
class BikeType{
public static final String OFO = "OFO";
public static final String MOBAI = "MOBAI";
}
共享單車類型
class ShareBikeFactory{
HashMap shareBikeMaps = new HashMap();
public ShareBikeFactory(){
shareBikeFactory.put("BikeType.OFO",new ShareBikeOFO());
shareBikeFactory.put("BikeType.MOBAI",new ShareBikeMoBai());
}
public ShareBike getShareBike(String type){
if(BikeType.OFO.equals(type)){
return (ShareBikeOFO)shareBikeMaps.get(type);
}else if(BikeType.MOBAI.equals(type){
return (ShareBikeMOBAI)shareBikeMaps.get(type);
}
return null;
}
}
單車托管所
public class Client{
public static void main(String args[]){
ShareBikeFactory mshareBikeFactory = new ShareBikeFactory();
ShareBike shareBikeOFO,shareBikeMobai;
shareBikeOFO = mshareBikeFactory.get(BikeType.OFO);
shareBikeMoBai = mshareBikeFactory.get(BikeType.MOBAI);
shareBikeOFO.ride();
shareBikeMoBai.ride();
}
}
客戶端根據(jù)需求拿單車來(lái)騎車
個(gè)人總結(jié)
享元模式是為了避免大量創(chuàng)建對(duì)象省內(nèi)存時(shí)候用的,Android中消息機(jī)制中Message用鏈表來(lái)存儲(chǔ)消息實(shí)現(xiàn)消息復(fù)用就是用到這種模式。