第二十章 Flyweight 模式
public class BigcharFactory{
//这里对使用到的内容进行了缓存
private HashMap pool = new HashMap();
//有则直接取,无则创建并保存到缓存。
public synchronized BigChar getBigChar(char charname){
BigChar bc = (BigChar) pool.get("" + charname);
if(bc == null){
bc = new BigChar(charname);
pool.put("" + charname, bc);
}
return bc;
}
}
第二十一章 proxy 模式
其实看看代码,我们会发现,直接使用 Printer 从代码上来讲区别不大但是正如这部分章节所讲的 避免浪费 。Proxy 模式保证了 Printer 对象只有在使用到的时候才初始化。在大型项目中,如果 Printer 是个很耗资源的类,可以起到节省资源的作用。
public class PrinterProxy implements Printable {
private String name;
private Printer real;
private String className;
public PrinterProxy() {
}
public PrinterProxy(String name, String className) {
this.name = name;
this.className = className;
}
public synchronized void setPrinterName(String name) {
if (real != null) {
real.setPrinterName(name);
}
this.name = name;
}
public String getPrinterName() {
return name;
}
//当使用的时候才 初始化
public void print(String string) {
realize();
real.print(string);
}
private synchronized void realize() {
if (real == null) {
try {
real = (Printer) Class.forName(className).newInstance();
real.setPrinterName(name);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
标签:real,设计模式,String,private,className,避免浪费,图解,public,name
From: https://www.cnblogs.com/dasuxd/p/18527692