单例模式
单例模式是23种设计模式中的一种,这里简单介绍一下单例模式
什么是单例模式?
**单例模式:**单例模式是为了保证JVM中某一个类型的java对象永远只有一个.
**目的:**为了节省内存的开销
实现步骤:
- 构造方法私有化
- 对外提供一个公共的静态的获取当前类型对象的方法
- 提供一个当前类型的静态变量
单例模式分为两种:
- 饿汉式单例:在类加载阶段就创建了对象
- 懒汉式单例:用到对象的时候才会创建对象
//饿汉式:
public class Single01{
//1.构造器私有化
private Single01(){
}
//2.私有化静态的该类的引用
//在类加载阶段就创建了对象
private static Single01 single=new Single01();
//3.公共的访问方式
public static Single01() newInstance{
return single;
}
}
//设计模式测试类
public class Test{
public static void main(String[]args){
//单例模式
Single01 single=Single01.newInstance();
System.out.println(single);
System.out.println(Single.newInstance());
System.out.println(Single.newInstance());
}
}
/*
输出结果:
com.shsxt.design02.Single01@15db9742
com.shsxt.design02.Single01@15db9742
com.shsxt.design02.Single01@15db9742
输出的对象地址值一样,代表单例模式设计成功.
为什么以上方法叫饿汉式呢?
因为在类加载阶段就创建了对象
*/
//懒汉式:
public class SingleTon02{
//2.私有的静态的该类的引用
private static SingleTon02 single=null;
//1.私有构造器
private SingleTon01(){
}
//3.公共的访问方式
public static SingleTon02 newInstance(){
if(single == null){
single = new SingleTon02();
}
return single;
}
}
//单例模式
public class Test {
public static void main(String[] args) {
//单例模式
System.out.println(SingleTon02.newInstance());
System.out.println(SingleTon02.newInstance());
System.out.println(SingleTon02.newInstance());
}
}
/*
输出结果:
com.shsxt.design02.SingleTon02@15db9742
com.shsxt.design02.SingleTon02@15db9742
com.shsxt.design02.SingleTon02@15db9742
输出的对象地址值一样,代表单例模式设计成功.
为什么以上方法叫懒汉式呢?
因为用到对象的时候才会创建对象
*/
静态代理
/*
静态代理:
真实角色需要和代码角色实现相同的接口
代理需要持有真实角色的引用
代理行为
静态代理的目的:
减少与真实角色的交流,提高代码的复用性,解耦,便于后期维护,代理角色可以扩展功能
*/
public class StaticProxy03{
public static void main(String[]args){
}
}
//接口
interface AddUser{
void addUser();
}
//项目经理 实现接口 AddUser
class Manager implements AddUser{
//重写接口里的抽象方法
@Override
public void addUser(){
System.out.println("录用...");
}
//人力资源 实现 接口 AddUser
class Hr implements AddUser{
//真实角色的引用
Manager manager;
//空构造
public Hr(){
}
public Hr(Manager manager)<