一、单例模式
懒汉模式:在类创建时不创建单例对象
1、必须要加同步关键字,否则多线程会出现创建多个单例的情况
2、由于同步关键字会使效率降低,可以用双重锁验证,不过单例对象要用volatile修饰,否则会报错
public class BaohanMoshi {
private static BaohanMoshi b = null;
private BaohanMoshi(){}
synchronized public BaohanMoshi getInstance(){
if(b==null){
b = new BaohanMoshi();
}
return b;
}
}
饿汉模式:在类加载时即创建对象
public class Ehanmoshi {
private static Ehanmoshi e = new Ehanmoshi();
private Ehanmoshi(){}
public Ehanmoshi getInstance(){
return e;
}
}
二、建造模式
注意和工厂模式的区别,这个更注重过程细节,工厂模式更宏观
三、原型模式
利用java的克隆,分为浅克隆和深克隆
浅克隆很简单不演示了,下面是深克隆示例
public class Qiche implements Cloneable , Serializable {
private String name;
private String color;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
public Object deepClone() throws Exception{
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream oo = new ObjectOutputStream(bo);
oo.writeObject(this);
ByteArrayInputStream bi = new ByteArrayInputStream(bo.toByteArray());
ObjectInputStream oi = new ObjectInputStream(bi);
return oi.readObject();
}
}