原型模式是一种创建型设计模式,使用克隆方法来复制现有对象,从而避免重复的初始化操作,特别适用于创建重复对象的场景。
适用场景:
- 当一个系统需要创建新对象的对象系统中,可通过克隆一个原型并对其进行改造。
- 当对象的创建成本比较大(如复杂的初始化)时。
示例代码:
abstract class Shape implements Cloneable {abstract void draw();@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}
}class Circle extends Shape {@Overridevoid draw() {System.out.println("Drawing a Circle");}
}class PrototypeManager {private Map<String, Shape> prototypes = new HashMap<>();public PrototypeManager() {prototypes.put("circle", new Circle());// 可以添加更多类型}public Shape getShape(String type) throws CloneNotSupportedException {return (Shape) prototypes.get(type).clone();}
}public class Client {public static void main(String[] args) throws CloneNotSupportedException {PrototypeManager pm = new PrototypeManager();Shape shape = pm.getShape("circle");shape.draw(); // 输出: Drawing a Circle}
}