类的设计模式概述
设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式免去我们自己再思考和摸索。模式就像是经典的棋谱,不同的棋局,我们用不同的棋谱, "套路"
一、单例设计模式(Singleton)
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对,某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造器的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以,指向类内部产生的该类对象的变量也必须定义成静态的。
单例设计模式写法一:饿汉式 管他啥时候用,先把对象造好再说
public class SingletonTest1{
public static void main(String[ ] args){
Bank bank1 = Bank.getInstance() //step4 main函数中获取instance对象,由于instance是静态属性,自然就是唯一对象了
}
}
class Bank {
private Bank(){ //step1 私有化构造器,不准main函数里面造bank对象
}
//step2 在类的内部用构造器创建Bank对象,赋值给类的静态私有Bank类型属性instance
/*说明:由于单例设计模式要求只能存在一个Bank类对象,所以只有类属性,才是唯一,所以一定要是静态的。另外,外部没 法创建对象,只能通过类用静态方法调,所以这里必须是静态属性。*/
private static Bank instance = new Bank();
//step3 提供一个public静态方法,让main函数可以通过类从外部获取到instance对象(即bank类的唯一对象)
//说明,如果不是静态方法,就必须在外面创建对象去调,然而,又不准外面创建对象,就死循环了
public static Bank getInstance() {
return instance;
}
}
单例设计模式写法二:懒汉式 先将属性赋值为null,到用的时候,才造对象
public class SingletonTest2{
public static void main(String[ ] args){
Bank bank1 = Bank.getInstance() //step4 main函数中获取instance对象,由于instance是静态属性,自然就是唯一对象了
}
}
- class Bank {