现在有一只羊Tom, 姓名: Tom 年龄: 1, 颜色为白色, 编写程序创建 和 Tom 羊属性完全相同的10只羊
package com.dance.design.designmodel.ysms;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class yxms {
public static void main(String[] args) {
Sheep sheep = new Sheep("tom", 1, "白色");
List<Sheep> collect = IntStream.range(0, 10).mapToObj(x -> sheep.clone()).collect(Collectors.toList());
System.out.println(collect);
}
}
class Sheep implements Cloneable{
String name;
Integer age;
String color;
public Sheep(String name, Integer age, String color) {
this.name = name;
this.age = age;
this.color = color;
}
@Override
public Sheep clone() {
try {
return (Sheep) super.clone();
} catch (CloneNotSupportedException e) {
throw new AssertionError();
}
}
}
额, 我并没有像视频中那样写, 我知道JDK中有Cloneable这个接口, 实现了应该就可以实现克隆的
使用原型模式改进传统方式问题, 让程序具有更高的效率和扩展性
我靠, 看到代码的时候, 直接给我搞破防了, 原来我TM上面写的就是原型模式, 难不成我已经进入第五层了?
在SPring中多利Bean就是通过原型模式实现的
就是对象依赖对象, 而不是基本数据类型
大概就是这样的情况
在调用拷贝方法的时候,依赖对象也应该是创建新的,引用也应该改变
就是我们当前实现的Cloneable接口,直接调用父类的clone方法, 如果没有重写过,那么就是浅拷贝, 只会拷贝基本类型, 引用类型是直接赋值的
我不想过多写这个这个东西,大家知道怎么实现就行了