单例模式比较高深,老师引入了集群的概念:相同的东西复制很多份

比如一个节点集群,可以理解成很多个jvm,他们统一由一个配置文件配置,那么这个配置文件实例化一次还是多次?

那么这个配置文件保存一次还是多次?

实例化多次,而实际上只有一次-----单例

java中,在某些场景下,一个进程中只允许一个对象的实例,那么我们把这种设计模式称为单例/单态

比如代码A:

将构造方法实例化,只能本类中访问,但是要求是外部类获得一个A对象,但是在外部又不能实例化A,而且必须是,获得同一个同一对象,所以采用加public,static和return的方法,这样就能类.方法获得一个statici对象A。

public class A {private String name="张三";private static A a;private A(){System.out.println(name);}public static A getA(){if (a==null) {a=new A();}return a;}}

在B类中测试一下,返回:    张三    turn

public class B {public static void main(String[] args) {A a=A.getA();A a2=A.getA();System.out.println(a==a2);}
}

需要注意的是,A里的getA()这样的方法是懒汉写法,相对简单的还有一个饥饿写法,但是这两种写法都是 非线程安全 的写法,为何不安全现在还用不到。个人猜测在多线程里如果这样new对象返回是否会造成new多个对象?

-----------------------------------------------------------------------------------------------------------------------

内部类老师说实际上用的并不多,用的话也是双层,因为内部类里还可以写内部类,而且会生成 外部类$内部类.class这样的文件,所以嵌套太多会生成太多。

需要记住的是内部类的特点,可以访问外部类的成员变量,包括private!

例子:

外部类为out,内部类为inner,打印结果为:

可以看出,一般内部类确实可以直接打印外部类的加了private修饰符的变量,而且一般变量和静态变量都能打印出来,而且根据当前对象this的不同也能分辨出内部类和外部类变量,而静态内部类内部可以定义一般变量,但是它访问外部类的静态变量。

内部哪里还经常使用呢?------->方法的回调(扩展)

public class Test {public static void main(String[] args) {Inner inner=new Out().new Inner();inner.show();inner.show2();inner.show3();inner.show4();Inner2 inner2=new Inner2();inner2.show();}
}
public class Out {private String name="外部类的一般变量";private static String name2="外部类的静态变量";private String name3="外部类的name";public class Inner{private String name3="内部类的name";public void show(){System.out.println(name);}     public void show2(){System.out.println(name2);}public void show3(){System.out.println(Out.this.name3);}public void show4(){System.out.println(Inner.this.name3);System.out.println(this.name3);}    }public static class Inner2{//String name2="内部类2";public void show(){System.out.println(name2);}}
}

单例模式和内部类的初步认识相关推荐

  1. 设计模式——3单例模式(Singleton)

    3.单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式.在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在.这样的模式有几个好处: 1.某些类创建比 ...

  2. 设计模式(创建型模式)——单例模式(Singleton)

    2019独角兽企业重金招聘Python工程师标准>>> 单例对象(Singleton)是一种常用的设计模式.在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在.这 ...

  3. Java的二十三种设计模式(单例模式、工厂方法模式、抽象工厂模式)

    从这一块开始,我们详细介绍Java中23种设计模式的概念,应用场景等情况,并结合他们的特点及设计模式的原则进行分析. 创建型模式(5种):用于描述"怎样创建对象",它的主要特点是& ...

  4. Java单例模式优化写法

    转载自 http://blog.csdn.net/diweikang/article/details/51354982 Java单例模式优化写法 方法一:推荐 [java] view plain co ...

  5. Java经典设计模式-创建型模式-单例模式(Singleton)

    2019独角兽企业重金招聘Python工程师标准>>> 单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式.在Java应用中,单例对象能保证在一个JV ...

  6. java设计模式学习 ----- 单例模式(Singleton)

    单例模式(Singleton) 单例对象(Singleton)是一种经常使用的设计模式. 在Java应用中,单例对象能保证在一个JVM中,该对象仅仅有一个实例存在.单例模式也分三种:懒汉式单例.饿汉式 ...

  7. 设计模式【单例模式】

    单例设计模式是设计模式中使用最为普通的模式之一.它是一种对象创建模式,用于产生一个对象的实例,它可以确保系统中一个类只产生一个实例.在Java语言中,这样的行为能带来两大好处: (1)对于频繁使用的对 ...

  8. java设计模式(四)--单例模式

    Singleton最熟悉不过了,下面学习单例模式.转载:http://zz563143188.iteye.com/blog/1847029 单例对象(Singleton)是一种常用的设计模式.在Jav ...

  9. 设计模式第一讲:单例模式(IBM开发者论坛已经发表的文章)

    插播小广告,本人的<大话Java性能优化>一书已经在亚马逊.京东.当当.天猫出售,提前谢谢大家支持. 单例模式 首先我们来讲一个故事.二次世界大战的时候,我国有一个著名的战役叫" ...

  10. 多线程下的单例模式详解

    1. 单例模式 (1) 单例模式简介 (2) 实现方式 ① 饿汉式 ② 懒汉式 2. 多线程下的单例模式 (1) Synchronized (2) 双重检查锁 (3) 双重检查锁+Volatile 补 ...

最新文章

  1. sphinx error connection to 127.0.0.1:9312 failed (errno=0, msg=)
  2. Java 数字用二进制表示,以及原码,反码,补码、负数的二进制表示
  3. 哪家中国公司为Java 16贡献最多?Java第一大厂居然不是第一的...
  4. [云炬创业基础笔记] 第三章测试1
  5. 即时通讯音视频开发(五):认识主流视频编码技术H.264
  6. 同一事务中未提交的写能读到吗_03、MySQL事务的隔离性分析
  7. Hibernate一对一映射示例注释
  8. python获得对象对应的类名称
  9. 网络爬虫python的特点有哪些_为什么写网络爬虫天然就是择Python而用
  10. eclipse 3.7 search 报resource is out of sync with the file system 解决方法
  11. mysql之主从复制
  12. LeetCode之SQL练习:第二高薪
  13. 双击IE出现打开方式解决办法
  14. vue设置proxy代理,如何去查看代理地址
  15. 未经授权,直接划扣资金!这些支付机构的用户要小心
  16. springMVC 面试题整理
  17. 计算机网络_实验16_网络故障导致环路
  18. execute,executeQuery和executeUpdate的区别
  19. http劫持软件、怎么应对这样的 HTTP 劫持
  20. 一份不错的正则入门文章

热门文章

  1. 风之大陆互通服务器账号,风之大陆有几个服务器?服务器互通吗?
  2. 手机安装python模块吗_1-Python-非root用户安装Python及Python模块
  3. C/C++[PAT B1022]D进制的A+B
  4. 算法:插入排序、归并排序、快速排序、堆排序
  5. 算法:Three sum求三个数之和
  6. PyTorch搭建GoogLeNet模型(在CIFAR10数据集上准确率达到了85%)
  7. linux SCP远程拷贝文件方法及not a regular file 错误解决方法
  8. bash给脚本加进度条_shell脚本进度条。
  9. 目标追踪论文之狼吞虎咽(2):在线被动攻击学习
  10. 最新最全latex在sublime上的配置步骤全解