zoukankan      html  css  js  c++  java
  • 使用反射破坏单例模式

      广州疯狂软件教育Java培训,iOS培训分享

      Java中可以使用反射来创建类的实例,即使类的构造方法私有时,也可以创建,这样就可能导致单例模式被破坏。比如下面非常纯的单例模式:

      //非常普通的单例模式

      public class Singleton {

      private static final Singleton instance = new Singleton();

      private Singleton() {

      }

      public static Singleton getInstance() {

      return instance;

      }

      }

      使用下面方法破坏单例:

      public class SingletonKiller {

      public static void main(String[] args) throws Exception {

      /* 可以使用相对路径,同一个包中可以不用带包路径 */

      Class s = Class.forName("com.piaohan.pattern.singleton.Singleton");

      Constructor ct = s.getDeclaredConstructor();

      /* true:使java不检查访问限制,即可以使用private方法 */

      ct.setAccessible(true);

      System.out.println(Singleton.getInstance());

      System.out.println(ct.newInstance());

      System.out.println(Singleton.getInstance() == ct.newInstance());

      }

      }

      结果如下:

      com.piaohan.pattern.singleton.Singleton@67f1fba0

      com.piaohan.pattern.singleton.Singleton@3fbefab0

      false

      Java培训不仅注重理论,更注重项目的实战能力,能够让你快速适应企业开发的进度,成为企业所需要的Java人才。疯狂Java培训主要提升学员就业能力,重点提升实践动手能力。没有工作经验的学员,在疯狂Java,通过大量全真经典企业级项目进行集中培训,课上讲师讲解和课下项目练习课上课下双管齐下,学员通过数月培训都可获得1-2年的工作经验,进而在同类的求职者中脱颖而出。疯狂java培训不但培养学员java开发思维,编程思想,还注重学员企业项目开发能力,让你上岗即上手。疯狂Java培训让你体会java编程的快乐,项目开发的兴奋,激情,通过短短几个月的时间,让你在半年的时间内掌握8-10万的代码量,掌握Java核心技术,迅速成为技能型的现代化高端人才,迅速获得高薪就业!

  • 相关阅读:
    上一张作业day16
    python 函数递归,三元表达式解读,匿名一次性函数,模块略解
    迭代器,生成器与内置函数
    闭合函数和装饰器
    函数的其他关键点*与**,函数的对象可以当做变量去使用,函数的嵌套,名称空间
    python函数,应用与讲解
    文件处理方式
    html-04 html骨架
    html-03 Web标准
    html-02 浏览器内核
  • 原文地址:https://www.cnblogs.com/gojava/p/3711428.html
Copyright © 2011-2022 走看看