设计模式概念
所谓的设计模式就是为了提高代码的重要性、优雅性、实现高内聚低耦合、以及满足开闭原则提出的开发思想,目前成熟的设计模式有23种,其中以下几种我们需要掌握:
单例设计模式、工厂设计模式(简单工厂、方法工厂、抽象工厂)、代理设计模式(静态代理、动态代理(JDK原生代码实现、cglib实现))、适配器设计模式、模板设计模式、装饰者设计模式。
一、单例 设计模式
如果要求某一个类在程序的一次运行或者一个运行着容器(比如说tomcat容器、Spring容器)只产生一个对象,此时就需要使用单例设计模式来控制对象的实例化个数
DEMO:观察代码:
package com.sun;
class SingleTon{
}
public class Test {
public static void main(String[] args) {
System.out.println(new SingleTon());
System.out.println(new SingleTon());
System.out.println(new SingleTon());
System.out.println(new SingleTon());
System.out.println(new SingleTon());
}
}
以上将本类对象保存到静态属性,静态属性是全局变量,是共享的,所以在主方法多次取得对象都是同一个,但是我们说过开发中类的属性尽量要使用prvate封装,之后为封装的属性提供一个方法供给外部调用。
DEMO:提供静态方法
//饿汉式单例设计模式
package com.sun;
class SingleTon{
private SingleTon() {};//构造方法私有化
private static final SingleTon INSTANCE=new SingleTon();
//提供一个方法方位instance属性
public static SingleTon getInstance() {
return INSTANCE;
}
}
public class Test {
public static void main(String[] args) {
System.out.println(SingleTon.getInstance());
System.out.println(SingleTon.getInstance());
System.out.println(SingleTon.getInstance());
System.out.println(SingleTon.getInstance());
}
}
DEMO:懒汉式的单例设计模式
package com.sun;
class SingleTon{
private SingleTon() {};//构造方法私有化
private static SingleTon instance;
//提供一个方法方位instance属性
public static SingleTon getInstance() {
if(instance==null) {
instance=new SingleTon();
}
return instance;
}
}
public class Test {
public static void main(String[] args) {
System.out.println(SingleTon.getInstance());
System.out.println(SingleTon.getInstance());
System.out.println(SingleTon.getInstance());
System.out.println(SingleTon.getInstance());
}
}
饿汉式和懒汉式的区别
饿汉式:只有在调用取得单例类的对象的静态方法的时候才会创建对象
懒汉式:一旦加载类的时候就创建了对象
总结
- 单例设计模式是让某个类在程序的一次运行中或者一个运行的容器中只产生一个对象
- 单例模式的特征:
- 构造方法私有化
- 将本类对象保存带一个静态属性中
- 提供一个静态方法取得本类对象
- 单例设计模式分为懒汉式和饿汉式