单例设计模式:

就是指一个类只允许产生一个实例化对象。

分析:

要想只能产生一个实例化对象,就意味着使用者不能在外部使用 new 生成一个实例,即表示该类的构造函数是私有的(貌似C++当中没有私有的构造函数),私有的构造函数只能在类内部执行才能实例化一个对象,意味着类内部一定会有一个静态的方法,来实例化一个自己的实例。

        两者的共同特点是:构造方法私有化,外部无法产生新的实例化对象,只能通过static方法取得实例化对象。

饿汉式单例设计模式:

class Message{private String note;private static final Message MESSAGE= new Message(); //静态的代码语句在类的内部实现一个实例化private Message(){} // 私有的构造函数public String getNote() { return note; }public void setNote(String note) { this.note = note; }public static Message getMessage(){return MESSAGE;}
}public class Main {public staticvoid main(String[] args) {Message s = null;s = Message.getMessage();System.out.println(s);}
}

特点:

    在类加载的时候在内部实例化一个自己的对象。

懒汉式单例设计模式:

class Message{private String note;private static Message message;private Message(){} // 私有的构造函数public String getNote() { return note; }public void setNote(String note) { this.note = note; }public static Message getMessage(){if (message == null){   // 表示第一次使用message = new Message();}return message;}
}public class Main {public staticvoid main(String[] args) {Message s = null;s = Message.getMessage();System.out.println(s);}
}

特点:

只有在第一次使用的时候才会为其实例化一个实例的操作。

多例设计模式:

类的实例化对象被限制为固定的几个。与多例设计模式大致相同,都是构造方法私有化,通过静态的方法获得对象。(该概念已经被枚举所取代了)

样例一:

class Sex{public staticfinal int MALE_CMD = 1;public static final int FEMALE_CMD = 2;private static final Sex MALE = new Sex("男");private static final Sex FEMALE = new Sex("女");private String sex;private Sex(String _sex){   // 构造方法私有化this.sex = _sex;}public static Sex getSex(int ch){switch (ch){case MALE_CMD:return MALE;case FEMALE_CMD:return FEMALE;default:return null;}}@Overridepublic String toString(){return this.sex;}
}public class Main {public staticvoid main(String[] args) {Sex a = Sex.getSex(Sex.MALE_CMD);System.out.println(a.toString());}
}

样例二:

class Admin{private static final  Integer MAX_ADMIN_COUNT = 3;  // 管理员最多只能有三个private static Integer ADMIN_COUNT = 0; // 当前已有管理员个数private String name;private Integer age;public static Admin getAdmin(){if (ADMIN_COUNT < MAX_ADMIN_COUNT){ADMIN_COUNT++;return new Admin();}else {return null;}}public Integer getAge() { return age; }public void setAge(Integer age) {this.age = age;}public String getName() { return name;}public void setName(String name) { this.name = name; }
}public class Main {public staticvoid main(String[] args) {Admin admin_1 = Admin.getAdmin();System.out.println(admin_1);Admin admin_2 = Admin.getAdmin();System.out.println(admin_2);Admin admin_3 = Admin.getAdmin();System.out.println(admin_3);Admin admin_4 = Admin.getAdmin();System.out.println(admin_4);        // null}
}

程序输出结果为:

Java中的程序设计模式--单例与多例相关推荐

  1. Java中的命令设计模式

    在本教程中,我们将学习命令模式,这是一种重要的行为设计模式. 它具有一些重要的应用程序,例如在文本编辑器中实现撤消/重做功能. 在命令设计模式中,有一个命令对象位于发送方和接收方对象之间. 发送者对象 ...

  2. Java中的策略设计模式-示例教程

    策略模式是行为设计模式之一 . 当我们对一个特定任务有多种算法,并且客户端决定在运行时使用的实际实现时,将使用策略模式. 策略模式也称为策略模式 . 我们定义了多种算法,并让客户端应用程序将算法用作参 ...

  3. java 状态设计模式_实例讲解:Java中的状态设计模式

    Java中的状态设计模式是一种软件设计模式,当对象的内部状态更改时,该模式允许对象更改其行为.状态设计模式通常用于以下情况:对象取决于其状态,并且在运行期间必须根据其内部状态更改其行为.状态设计模式是 ...

  4. Java中的状态设计模式–示例教程

    状态模式是行为设计模式之一 . 当对象根据其内部状态更改其行为时,将使用状态设计模式. 如果必须根据对象的状态更改其行为,则可以在对象中使用状态变量,并使用if-else条件块根据状态执行不同的操作. ...

  5. Java中的Memento设计模式-示例教程

    记忆模式是行为设计模式之一 . 当我们要保存对象的状态以便以后可以恢复时,可以使用Memento设计模式. 记忆模式用于以这种方式实现该目的,即在对象外部无法访问该对象的已保存状态数据,从而保护了已保 ...

  6. Java中的访问者设计模式–示例教程

    访客模式是行为设计模式之一 . 当我们必须对一组相似类型的对象执行操作时,将使用访问者模式. 借助访问者模式,我们可以将操作逻辑从对象移动到另一个类. 例如,假设有一个购物车,我们可以在其中添加不同类 ...

  7. Java中的迭代器设计模式–示例教程

    迭代器模式是一种行为模式,用于提供遍历一组对象的标准方式. Iterator模式在Java Collection Framework中得到了广泛使用,其中Iterator接口提供了遍历集合的方法. 根 ...

  8. Java中的原型设计模式

    Prototype design pattern is one of the Creational Design pattern, so it provides a mechanism of obje ...

  9. 在JAVA中 以下程序_在Java中,以下程序的输出结果是()_学小易找答案

    [单选题]运行以下Java代码,说法正确的是( ). [单选题]在Java中,以下程序的输出结果是() [单选题]利用"出声"的方式向学生展示教师分析问题的过程与方法的教学方法是_ ...

最新文章

  1. 是谁“偷吃”了硬盘中的3GB空间
  2. php curl cookiejar,php使用CURL不依赖COOKIEJAR获取COOKIE的方法
  3. php for循环in的用法,JavaScript中for in循环是如何使用的?需要注意些什么?
  4. 编写你的第一个 Django 应用,第 1 部分
  5. ABAP学习-第二章[HELLO WORLD]
  6. DxO FilmPack 5教程:对照片进行艺术渲染,使其具有专业电影的色彩和颗粒感
  7. php bloginfo templatedirectory,PHP变量不显示使用bloginfo('template_directory')的图像
  8. android 生成apk名字自动已,Jenkins打包android应用时自动签名apk详解
  9. 二级公共基础之——数据结构与算法
  10. QQ能上 网页却打不开
  11. springboot证书管理系统的设计与实现毕业设计源码162317
  12. Adobe Dreamweaver CS5和Photoshop CS5序列号
  13. 用Python挖掘网易云音乐的热门歌单
  14. matlab通过变量调用txt文件路径,MATLAB使用load函数读取txt文档
  15. mysql:mysql数据库下载及安装(详细)
  16. MIPS微程序CPU设计
  17. dataframe python,使用pandas dataframe python创建实时更新图
  18. Liunx常用命令速查
  19. 批量本地英语文档翻译软件
  20. 进制如何转换?原理是什么?

热门文章

  1. 【Python金融量化 8- 100 】八、计算投资组合风险
  2. ​让人惊叹的Johnson-Lindenstrauss引理:应用篇
  3. 用开源的人工标注数据来增强RoFormer-Sim
  4. 推荐几个出论文的好方向
  5. SIGIR 2019 开源论文 | 基于图神经网络的协同过滤算法
  6. HDU 2063 过山车 二分图匹配 匈牙利算法
  7. 第十届四川省大学生程序设计竞赛
  8. php随机获取文件夹,php从文件夹随机读取文件的方法
  9. 10分钟零基础带你入门Ribbon小项目-啥?小白都能看懂?
  10. Mybatis-自定义类型处理器