设计模式

一、单例模式Singleton

特点:

  1、单例类只能有一个实例

  2、单例类自己创建自己的唯一实例

  3、单例类必须给整个系统提供这个实例

饿汉式:

public class Singleton {
    private static final Singleton singleton=new Singleton();
    private Singleton(){
    }
    public static Singleton getSingleton(){
        return singleton;
    }
}

  优点:写法简单,在类装载的时候就完成了实例化,避免了线程同步问题

  缺点:没有延迟加载在类装载的时候就完成了实例化,如果没有使用过实例,就会造成内存浪费

懒汉式:线程不安全

  1、构造函数私有化

  2、类中初始化一个私有的静态常对象

  3、通过get方法获取该实例

public class Singleton {
    private static final Singleton singleton=null;
    private Singleton(){
    }
    public static Singleton getSingleton(){
        if(singleton==null){
            singleton=new Singleton();
        }
        return singleton;
    }
}

 

二、原型模式prototype:通过拷贝指定的原型实例,创建和该对象一样的新对象

深拷贝:不仅复制成员变量中 基本数据类型的值,还会给引用数据类型的成员变量申请存储空间,这样拷贝出来的新对象不会对原来造成影响

浅拷贝:1、当成员变量是基本数据类型时,复制值  2、当成员变量是引用数据类型,复制引用数据类型的地址值

【注】

  1、Object类中提供的clone都是浅拷贝,可以把String当作基本类

  2、使用clone方法,类的成员变量不能增加final关键字

实现Cloneable接口,当作原型

public class PrototypeClass implements Cloneable{
    @Override
    protected PrototypeClass clone() throws CloneNotSupportedException {
        PrototypeClass prototypeClass=null;
        prototypeClass= (PrototypeClass) super.clone();
        return prototypeClass;
    }
}

 

设计模式

上一篇:1355:字符串匹配问题(strs)


下一篇:snmp 采集华为交换机 指标数据到prometheus