1700457820
1700457821
if(type.equals(“Product1”)){
1700457822
1700457823
product=new ConcreteProduct1();
1700457824
1700457825
}else{
1700457826
1700457827
product=new ConcreteProduct2();
1700457828
1700457829
}
1700457830
1700457831
//同时把对象放到缓存容器中
1700457832
1700457833
prMap.put(type,product);
1700457834
1700457835
}
1700457836
1700457837
return product;
1700457838
1700457839
}
1700457840
1700457841
}
1700457842
1700457843
代码还比较简单,通过定义一个Map容器,容纳所有产生的对象,如果在Map容器中已经有的对象,则直接取出返回;如果没有,则根据需要的类型产生一个对象并放入到Map容器中,以方便下次调用。
1700457844
1700457845
延迟加载框架是可以扩展的,例如限制某一个产品类的最大实例化数量,可以通过判断Map中已有的对象数量来实现,这样的处理是非常有意义的,例如JDBC连接数据库,都会要求设置一个MaxConnections最大连接数量,该数量就是内存中最大实例化的数量。
1700457846
1700457847
延迟加载还可以用在对象初始化比较复杂的情况下,例如硬件访问,涉及多方面的交互,则可以通过延迟加载降低对象的产生和销毁带来的复杂性。
1700457848
1700457849
1700457850
1700457851
1700457853
设计模式之禅 8.5 最佳实践
1700457854
1700457855
工厂方法模式在项目中使用得非常频繁,以至于很多代码中都包含工厂方法模式。该模式几乎尽人皆知,但不是每个人都能用得好。熟能生巧,熟练掌握该模式,多思考工厂方法如何应用,而且工厂方法模式还可以与其他模式混合使用(例如模板方法模式、单例模式、原型模式等),变化出无穷的优秀设计,这也正是软件设计和开发的乐趣所在。
1700457856
1700457857
1700457858
1700457859
1700457861
设计模式之禅 第9章 抽象工厂模式
1700457862
1700457864
9.1 女娲的失误
1700457865
1700457866
第8章讲了女娲造人的故事。人是造出来了,世界也热闹了,可是低头一看,都是清一色的类型,缺少关爱、仇恨、喜怒哀乐等情绪,人类的生命太平淡了,女娲一想,猛然一拍脑袋,忘记给人类定义性别了,那怎么办?抹掉重来,于是人类经过一次大洗礼,所有的人种都消灭掉了,世界又是空无一物,寂静而又寂寞。
1700457867
1700457868
由于女娲之前的准备工作花费了非常大的精力,比如准备黄土、八卦炉等,从头开始建立所有的事物也是不可能的,那就想在现有的条件下重新造人,尽可能旧物利用嘛。人种(Product产品类)应该怎么改造呢?怎么才能让人类有爱有恨呢?是神仙当然有办法了,定义互斥的性别,然后在每个个体中埋下一颗种子:异性相吸,成熟后就一定会去找个异性(这就是我们说的爱情原动力)。从设计角度来看,一个具体的对象通过两个坐标就可以确定:肤色和性别,如图9-1所示。
1700457869
[
上一页 ]
[ :1.70045782e+09 ]
[
下一页 ]