阿里云做网站官网,百度服务中心电话,设计师学校有哪些,南宁seo按天收费你好#xff0c;我是程序员雪球。
今天我们来学习23种设计模式之原型模式#xff0c;在平时开发过程中比较少见。我带你了解什么是原型模式#xff0c;使用场景有哪些#xff1f;有什么注意事项#xff1f;深拷贝与浅拷贝的区别#xff0c;最后用代码实现一个简单的示例…你好我是程序员雪球。
今天我们来学习23种设计模式之原型模式在平时开发过程中比较少见。我带你了解什么是原型模式使用场景有哪些有什么注意事项深拷贝与浅拷贝的区别最后用代码实现一个简单的示例。 一、是什么
原型模式是一种创建对象的模式它通过复制一个已存在的对象来创建新的对象而不是通过传统的 new 操作符来创建对象。这种模式的主要目的是提高创建对象的效率和性能尤其是在需要创建大量相似对象的情况下。 二、使用场景 - 当创建对象的过程比较复杂或耗时较长时使用原型模式可以提高创建对象的效率。
- 当需要创建大量相似对象时使用原型模式可以减少内存的开销。
- 当需要动态地创建对象时使用原型模式可以方便地实现对象的复制和修改。 三、注意事项 - 在使用原型模式时需要注意深拷贝和浅拷贝的区别。浅拷贝只复制对象的引用而不复制对象的内容因此在修改原始对象时复制对象也会受到影响。深拷贝则会复制对象的所有内容包括嵌套对象因此在修改原始对象时复制对象不会受到影响。 - 在使用原型模式时需要注意对象的创建和销毁。由于原型模式通过复制对象来创建新对象因此需要确保原始对象在不再需要时被正确地销毁以释放内存资源。 四、代码示例
接下来让我们用 Java 来实现一个简单的示例吧。 public class PrototypePattern { public static void main(String[] args) { PrototypePrototype obj1 new PrototypePrototype(Apple); PrototypePrototype obj2 obj1.clone(); // 修改 obj2 的属性 obj2.setName(Banana); // 输出 obj1 和 obj2 的属性 System.out.println(obj1.getName()); System.out.println(obj2.getName()); }
} class PrototypePrototype implements Cloneable { private String name; public PrototypePrototype(String name) { this.name name; } // 获取对象的克隆 public Object clone() throws CloneNotSupportedException { return super.clone(); } // 获取对象的名称 public String getName() { return name; } // 设置对象的名称 public void setName(String name) { this.name name; }
} 在上面的示例中我们定义了一个 PrototypePrototype 类它实现了 Cloneable 接口并重写了 clone() 方法。在 PrototypePrototype 类中我们有一个私有成员变量 name用于存储对象的名称。我们还提供了 getName() 和 setName() 方法用于获取和设置对象的名称。 在 main() 方法中我们创建了两个 PrototypePrototype 对象 obj1 和 obj2。我们使用 obj1.clone() 方法来创建 obj2这将返回一个与 obj1 完全相同的副本。然后我们修改 obj2 的名称并输出 obj1 和 obj2 的名称。 通过使用原型模式我们可以通过复制已存在的对象来创建新的对象而不必每次都重新创建对象。这样可以提高创建对象的效率和性能尤其是在需要创建大量相似对象的情况下。 总结 一、是什么
原型模式通过复制一个已存在的对象来创建新的对象而不是通过传统的 new 操作符来创建对象。这样可以提高创建对象的效率和性能尤其是在需要创建大量相似对象的情况下。
二、使用场景
1、创建比较耗时的对象场景
2、创建大量相似对象场景
3、动态创建对象场景
三、注意事项
1、浅拷贝只复制对象的引用而不复制对象的内容因此在修改原始对象时复制对象也会受到影响。
2、深拷贝则会复制对象的所有内容包括嵌套对象因此在修改原始对象时复制对象不会受到影响。
3、在使用原型模式时需要注意对象的创建和销毁。 想要了解更多设计模式相关知识请关注我吧下期持续更新。