小Q:什么是设计模式
慢慢:设计模式是系统服务设计中针对常见场景的一种解决方案,可以解决功能逻辑开发中遇到的共性问题。设计模式并不局限最终的实现方案,而是在这种概念模式下,解决系统设计中的代码逻辑问题。
小Q:什么是原型模式
慢慢:原型模式主要解决创建重复时繁琐的问题。该模式实现了一个接口,用于创建当前的对象的克隆,避免了我们在创建时需要重新赋值等问题。
小Q:赶快上代码!
慢慢:好的,我们来模拟克隆图形。
// 可克隆的图形抽象类
public abstract class Shape implements Cloneable {
protected String id;
protected String type;
abstract void draw();
public String getType() {
return type;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
public Shape clone() {
Shape clone = null;
try {
clone = (Shape) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return clone;
}
具体图形:
public class Rectangle extends Shape {
public Rectangle(){
type = "Rectangle";
}
@Override
public void draw() {
System.out.println(type);
}
}
---
public class Square extends Shape {
public Square(){
type = "Square";
}
@Override
public void draw() {
System.out.println(type);
}
}
克隆对象
public class Demo {
public static void main(String[] args) {
Circle circle = new Circle();
circle.setId("1");
Circle circleClone = circle.clone(); // 克隆出相同的对象
Square square = new Square();
square.setId("2");
Square squareClone = square.clone(); // 克隆出相同的对象
}
}
小Q:这种模式的优缺点是什么?
慢慢:原型模式的优点包括:便于创建复杂对象,避免重复初始化。缺点:如果对象种包括了循环引用的复制,以及类种深度使用对象的复制,都会让这种思路的代码逻辑变得异常复杂。