1. 通过对现有的对象的复制来实现新对象的创建
2. 组成
- 客户角色: 客户类提出创建对象的请求 (如下图的 PrototypePatternDemo)
- 抽象原型角色: 通常有Java接口(Cloneable )或者java 抽象类实现。给出所有的具体原型类需要的接口 (如下图的 shape)
- 具体原型角色: 被复制的对象。西角色需要实现抽象的原型角色所要求的接口。 (如下图的 circle. Rectangle, square)
3. 场景理解
我们将创建一个抽象类 Shape 和扩展了 Shape 类的实体类。下一步是定义类 ShapeCache,该类把 shape 对象存储在一个 Hashtable 中,并在请求的时候返回它们的克隆。
PrototypePatternDemo,我们的演示类使用 ShapeCache 类来获取 Shape 对象。
4. 应用
Spring默认的Bean的scope
1、默认的值是singleton(単例),spring容器只会创建一个相应的bean实例,所有的对该bean的请求,spring容器都只返回这个实例。
2、还可取值proptotype(原型) ,每次请求都会获得新的bean实例。(利用了原型模式原理)