面试中,设计模式,源码、数据结构、框架原理、JVM、GC、中间件等一个也少不了,所有的这些东西都需要平时进行积累。我这里后面会做一个专题,把设计模式单独做成一个菜单,方便后面面试的各位网友。

在 Java 中创建对象的方法有很多,比如:通过 new、反射、.clone、反序列化、. 等。他们的用处各不相同,今天我借助 .clone 来讲一个原型设计模式。

原型模式( )是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

当直接创建对象的代价比较大时,则采用这种模式。例如原型模式,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库原型模式,以此来减少数据库调用。

在现实生活中也处处离不开原型模式。比如,细胞的分裂等。

原型模式非常的简单。简单到可以用下面的 3 个类搞定它的类图。

我们常见的游戏打飞机,或者植物大战僵尸。都可以利用到原型设计模式。

原型模式_原型模式优缺点_原型模式的应用场景

每个飞机,或者炮弹的坐标可能不一样,但是要产生非常多的飞机,如果一个一个的来创建,代价太高,因此,我们可以使用原型模式来解决。

原型模式非常的简单,有些网友可能会觉得难,那是因为它的使用场景你没有搞清楚。下面我总结了一下原型模式的常用场景。

通过这几个场景,我们也可以看出来,原型模式:能够提高性能;同时还能够逃避构造函数的约束。但是除了这两个优点外,缺点也很明显。必须实现 接口;并且特别当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候,克隆的深度你就得通盘考虑了。

设计模式很多人都看过很多遍了,但是一到面试还是不会。原因就是使用的场景不熟悉,并且没有在正式的代码中使用过。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注