package 原型模式;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class Demo {
private HashMap<String, String> currentKeywords=new HashMap<>();
private long lastUpdateTime = -1;
public void refresh() {
currentKeywords.put("1","wuuw");
currentKeywords.put("2","wuuw");
currentKeywords.put("3","wuuw");
HashMap<String, String> newKeywords = (HashMap<String, String>) currentKeywords.clone();
List<String> toBeUpdatedSearchWords = new ArrayList<>();
toBeUpdatedSearchWords.add("1");
toBeUpdatedSearchWords.add("2");
int i = 0;
if(newKeywords.size() <= toBeUpdatedSearchWords.size()){
i = toBeUpdatedSearchWords.size();
}
if(toBeUpdatedSearchWords.size() <= newKeywords.size()){
i = newKeywords.size();
}
long maxNewUpdatedTime = lastUpdateTime;
for (int j= 0; j<= i; j++ ) {
String searchWord = "";
if (j< toBeUpdatedSearchWords.size()){
searchWord = toBeUpdatedSearchWords.get(j);
}
if (newKeywords.containsKey(searchWord)) {
newKeywords.remove(newKeywords);
}else {
newKeywords.remove(newKeywords);
}
newKeywords.put(searchWord, searchWord);
lastUpdateTime = maxNewUpdatedTime;
currentKeywords = newKeywords;
}
public static void main(String[] args) {
Demo demo = new Demo();
demo.refresh();
demo.currentKeywords.forEach((key,value) ->{
System.out.println("Key = " + key + " " + " Value = " + value);
});
}
}
- 如果对象的创建成本比较大, 而同一个类的不同对象之间差别不大(大部分字段都相同) , 在这种情况下,
我们可以利用对已有对象(原型)进行复制 (或者叫拷贝) 的方式来创建新 对象, 以达到节省创建时间的目的。
这种基于原型来创建对象的方式就叫作 原型设计模式 ( Prototype Design Pattern) , 简称 原型模式
java中clone就是原型模式