其实本猿觉得吧,很多模式都是没啥可学的,大概就是你代码写多了,你自然而然的就会知道如何有效的编码了。
说下享元模式吧,反正闲着也是闲着:
public interface Jianzhu {
void use();
}
public class TiYuGuan implements Jianzhu {
private String name;
private String shape;
private String yundong;
public TiYuGuan(String yundong){
this.setYundong(yundong);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getShape() {
return shape;
}
public void setShape(String shape) {
this.shape = shape;
}
public String getYundong() {
return yundong;
}
public void setYundong(String yundong) {
this.yundong = yundong;
}
@Override
public void use() {
System.out.println("该体育馆被使用来召开奥运会" + " 运动为:"+ yundong+" 形状为:"+shape+ " 名称为:"+name);
}
}
import java.util.*;
public class JianZhuFactory {
private static final Map<String,TiYuGuan> tygs = new HashMap<String,TiYuGuan>();
public static TiYuGuan getTyg(String yundong){
TiYuGuan tyg = tygs.get(yundong); //从map中获取TiYuGuan对象
if(tyg == null){ //判断为空则创建新的TiYuGuan
tyg = new TiYuGuan(yundong);
tygs.put(yundong,tyg);
}
return tyg;
}
public static int getSize(){
return tygs.size(); //由于会判断为空才创建,所以这里会保证相同对象只有一个,这个就是有点类似单例模式
}
}
//测试
public class Clienter {
public static void main(String[] args) {
TiYuGuan yundong ="足球";
for(int i = 1;i <= 5;i++){
Object tyg = JianZhuFactory.getTyg(yundong);
System.out.println("对象池中对象数量为:"+JianZhuFactory.getSize());
}
}
}
享元模式就是有点类似单例模式,没啥可说的,拜拜。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于