设计模式三、单例模式 ,建造模式,原型模式

    技术2022-07-10  136

    一、单例模式

    懒汉模式:在类创建时不创建单例对象

    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(); } }

     

    Processed: 0.017, SQL: 9