星空网 > 软件开发 > ASP.net

[java学习笔记]设计模式

解决的问题:

保证一个类在内存中的唯一性。

比如,必须要对于多个程序使用同一个配置信息时,就需要保证该对象的唯一性。

原理:

如何保证对象的唯一性呢?

  1. 不允许其他程序使用new创建该类对象
  2. 在该类中创建一个本类对象
  3. 对外提供一个公共方法,使其他程序可以获取该实例。

步骤:

  1. 私有化该类的构造函数
  2. 通过new在本类中创建一个本类对象
  3. 定义一个公共的方法,将创建的对象返回。

单利设计模式的分类:

1.饿汉式

//饿汉式class Single{  //私有化该类的默认构造函数,使外部不能new该类对象  private Single()  {  }  //创建一次该类对象  private static Single s = new Single();  //对外提供获取该对象的方法  public static Single getInstance(){    return s;  }  }

class SingleDemo{  public static void main(String[] args){    Single s1 = SIngle.getInstance();    Single s2 = SIngle.getInstance();    System.out.println(s1==s2);  }}

内存图解:

[java学习笔记]设计模式

说明:

  1. main函数进栈,并执行第一句代码Single s1 = SIngle.getInstance(); ,创建s1引用
  2. 在方法区中加载Single类的方法,在非静态区有Single的构造函数,静态区有s成员变量、getInstance方法
  3. 在堆中创建一个Single对象,并让s指向该对象
  4. 执行Single s1 = SIngle.getInstance(); 赋值操作,使s1的值为s的值。
  5. s2同理,由于对内存中只有一个该类的对象,并使静态区的s指向它,因此s1和s2指向同一对象。

2.懒汉式

//l懒汉式class Single{  //私有化默认构造函数  private Single(){}  //声明一个该类的引用  private static Single s;  //对外提供获取该类唯一对象的方法  public static Single getInstance(){    if(s==null)      //如果s是第一次创建      s = new Single();    return s;  }}

 

饿汉和懒汉模式的区别:

饿汉模式,类一加载对象就已经建立

懒汉模式,类加载时没有对象,只有调用了getInstance方法才创建对象,即延迟加载

 

饿汉模式效率比懒汉模式高,因为饿汉模式不像懒汉模式那样每次获取对象都做判断

懒汉模式在多线程中可能存在安全问题。




原标题:[java学习笔记]设计模式

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

市场规模数十亿的网文漫画出海怎么玩?:https://www.kjdsnews.com/a/558713.html
开通Shopify Payments常见问题解答:https://www.kjdsnews.com/a/558714.html
有墨西哥海外仓退货回国服务吗?哪家墨西哥海外仓好?:https://www.kjdsnews.com/a/559660.html
亚马逊垄断电子产品市场 ,Shopee母公司Sea拟融资63亿美元:https://www.kjdsnews.com/a/559661.html
深圳扶持电商政策来了!最高500万:https://www.kjdsnews.com/a/559662.html
3天暴涨8万条评论,亚马逊黑科技谁顶得住?:https://www.kjdsnews.com/a/560660.html
大批Listing被下架,“黄色警告”!提示存在停用风险:https://www.kjdsnews.com/a/1836647.html
跨境支付百科——巴西支付篇:https://www.kjdsnews.com/a/1836648.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流