设计模式是在大量的实践中总结和理论化之后的代码结构、编程风格、以及解决问题的思考方式。常见的有23种设计模式。单例设计模式,代理设计模式,工厂设计模式,观察者设计模式,装饰设计模式…
● 单例设计模式
类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造器的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以,指向类内部产生的该类对象的变量也必须定义成静态的。上述内容可以总结为以下三点:
- 构造方法私有化
- 静态属性指向实例
- public static的 getInstance方法,返回第二步的静态属性
●单例设计模式的作用
某个类的对象在当前工程中只能有一个
-●单例设计模式实现的方式:懒汉式 vs 饿汉式
-
懒汉式和饿汉式的概念
饿汉式是立即加载的方式,无论是否会用到这个对象,都会加载。
懒汉式,是延迟加载的方式,只有使用的时候才会加载。 -
饿汉式和懒汉式的区别:
饿汉式 :线程安全的
懒汉式 :1.线程不安全的 2.延迟了对象的创建时机一定上程度上节省了内存的开销。(懒加载) -
代码
//饿汉式
class Bank{
//1.私有化构造器
private Bank(){}
//2.创建一个该类的对象,并使用static修饰
private static Bank bank = new Bank();
//3.提供一个公共的方法,用来返回对象。该方法必须是静态方法(可以通过类名调用该方法)。
public static Bank getInstance(){
return bank;
}
}
//懒汉式
class Computer{
//1.私有化构造器
private Computer(){}
//2.提供一个该类的对象的声明
private static Computer computer = null;
//3.提供一个公共的方法,并返回对象
public static Computer getInstance(){
//4.创建对象
if(computer == null){
computer = new Computer();
}
return computer;
}
}